主要是注意输入,我用的是RMQ算法求LCA,在询问特多时比tarjan的时间要少。
#include#include #include #include using namespace std;const int N=1008;int vis[N],val[N],p[N];int first[N*2],node[N*2],dep[N*2],dp[N*2][25];int mi[25];//移位运算vector map[N];//邻接表int lc[N],in[N];void dfs(int &index,int u,int d){ index++;//时间搓,全部遍历一次并记录所有节点的父亲,为查找公共祖先做准备 node[index]=u; dep[index]=d; vis[u]=1; first[u]=index; for(int i=0;i