[模板]LCA:Tarjan

 1 void tarjan(int k){
 2     bj[k]=1;
 3     for(int i=fir[k];i;i=l[i])
 4         if(!bj[to[i]])
 5             dt[to[i]]=dt[k]+len[i],tarjan(to[i]),zx[to[i]]=k;
 6     for(int i=qfir[k];i;i=ql[i])
 7         if(bj[qto[i]]==2)
 8             ans[(i+1)/2]=min(ans[(i+1)/2],dt[k]+dt[qto[i]]-2*dt[get(qto[i])]);
 9     bj[k]=2;
10 }
View Code

 

posted @ 2019-07-07 06:28  DeepinC  阅读(65)  评论(0编辑  收藏  举报