void tarjan(int u) {
low[u]=dfn[u]=++dfstim;
st[++top]=u;
for(rint i=head[u];i;i=e[i].nxt) {
int v=e[i].to;
if(!dfn[v])tarjan(v),low[u]=min(low[u],low[v]);
else if(!scc[v])low[u]=min(low[u],dfn[v]);
}
if(low[u]==dfn[u]) {
++C,scc[u]=C;
while(st[top]!=u)scc[st[top--]]=C;
--top;
}
}
强连通分量(缩点,tarjan)(无讲解)
猜你喜欢
转载自www.cnblogs.com/zzctommy/p/12957780.html
今日推荐
周排行