void LCA(int u) { p[u]=u; visit[u]=true; for(int i=head[u]; i!=-1; i=edge[i].next) { int v=edge[i].to; if(!visit[v]) { LCA(v); p[v]=u; } } for(int i=qhead[u]; i!=-1; i=qedge[i].next) { int v=qedge[i].to; if(visit[v]) { qedge[i].lca=find(v); qedge[i^1].lca=qedge[i].lca; } } }
原文:http://www.cnblogs.com/zjbztianya/p/3571099.html