有向图强连通分量模板

来源:互联网 发布:ac100网络隔离 编辑:程序博客网 时间:2024/06/16 18:37
void tarjan(int u)
{
    pre[u]=lowlink[u]=++time;
    s.push(u);
    for (int i=head[u];i!=-1;i=e[i].next)
    if (!pre[to])
    {
        tarjan(to);
        lowlink[u]=min(lowlink[u],lowlink[to]);
    }
    else if (!sccno[to])
    {
        lowlink[u]=min(lowlink[u],pre[to]);
    }
    if (lowlink[u]==pre[u])
    {
        sum++;
        for (;;)
        {
            int x=s.top();s.pop();
            sccno[x]=sum;
            if (x==u) break;
        }
    }
}
0 0
原创粉丝点击