学习:Tarjan算法

Posted pfypfy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习:Tarjan算法相关的知识,希望对你有一定的参考价值。

修改中……

模板:

class graph
{
    private:
        struct edge
        {
            int from,to,next;
        } e[maxm];
    public:
        int m,n;
        int first[maxn];
        void addedge(int from,int to)
        {
            e[++m]= (edge)
                    {
                        from,to,first[from]
                    };
            first[from]=m;
        }
        int dfn[maxn],low[maxn],sccno[maxn],sz[maxn];
        int cl,now;
        int stk[maxn],top;
        void dfs(int u)
        {
            dfn[u]=low[u]=++cl;
            stk[++top]=u;
            for(int i=first[u]; i; i=e[i].next)
            {
                int v=e[i].to;
                if(!dfn[v])
                {
                    dfs(v);
                    low[u]=min(low[u],low[v]);
                }
                else    if(!sccno[v])low[u]=min(low[u],dfn[v]);
            }
            if(low[u]==dfn[u])
            {
                now++;
                while(top)
                {
                    int v=stk[top--];
                    sccno[v]=now;
                    sz[now]++;
                    if(v==u)break;
                }
            }
        }
        bool out[maxn];
        int work()
        {
            /*根据题目*/
        }
        void read()
        {
            int t,x,y;
            scanf("%d%d",&n,&t);
            for(int i=1; i<=t; ++i) scanf("%d%d",&x,&y),addedge(x,y);
            return;
        }
} g;

以上是关于学习:Tarjan算法的主要内容,如果未能解决你的问题,请参考以下文章

学习:Tarjan算法

Tarjan算法学习笔记

tarjan算法求强联通分量

Tarjan算法总结

Tarjan各大算法汇总

机器学习实战应用案例100篇(二十五)-强联通分量算法应用案例