码迷,mamicode.com
首页 > 编程语言 > 详细

学习:Tarjan算法

时间:2018-04-06 12:28:37      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:div   next   根据   down   oid   pre   blog   ext   for   

修改中……

模板:

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算法

标签:div   next   根据   down   oid   pre   blog   ext   for   

原文地址:https://www.cnblogs.com/pfypfy/p/8726972.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!