void dfs(int u)
{
low[u]=dfn[u]=++dfs_clock;
s.push(u);
for(int i=first[u];i!=-1;i=nxt[i])
{
int w=l[i].t;
if(!dfn[w])
{
dfs(w);
low[u]=min(low[u],low[w]);
}
else if(!scc[w])
{
low[u]=min(low[u],dfn[w]);
}
}
if(low[u]==dfn[u])
{
scc_num++;
while(1)
{
int x=s.top();
s.pop();
scc[x]=scc_num;
size[scc_num]++;
if(x==u) break;
}
}
}
【模板】tarjan
最新推荐文章于 2024-05-07 22:08:27 发布
本文深入探讨了Tarjan算法的原理,详细解释了其在图论中的应用,并提供了完整的模拟过程,帮助读者理解如何使用该算法解决强连通分量问题。
摘要由CSDN通过智能技术生成