tarjan

原创 2016年08月30日 14:05:24
void tarjan(int u)
{
    dfn[u]=low[u]=++stamp;
    used[u]=1;//进栈
    s.push(u);
    for(int i=0;i<graph[u].size();i++)
    {
        int v=graph[u][i];
        if(used[v]==0)
        {
            tarjan(v);//如果没有入栈,则dfs
            low[u]=min(low[u],low[v]);
        }
        else if(used[v]==1)
        {
            low[u]=min(low[u],low[v]);//当我们遇到一个在栈里的节点时,这个节点要么是强连通分量里的一个点,要么是那个low[u]==dfn[u]的点,此时碰到的点肯定能形成强连通分量,其low也是那个原点。
        }
    }
    if(low[u]==dfn[u])
    {
        int temp=0;
        while(s.top()!=u)
        {
            used[s.top()]=-1;//入栈又出栈的点,以后再也不能访问
            s.pop();
            temp++;
        }
        used[s.top()]=-1;
        s.pop();
        temp++;
        }
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Tarjan算法精讲

  • 2016年05月07日 18:03
  • 571KB
  • 下载

Tarjan算法模板

  • 2012年05月25日 19:07
  • 1KB
  • 下载

tarjan算法-双连通分量

//因为long long wa了几发....然后主要就是注意割点和求联通分量条件不一样,求割点的条件并不需要low[num]==dfn[num]这个条件太严格了。只需要low[to]...

Tarjan算法 讲解

  • 2017年12月10日 16:22
  • 620KB
  • 下载

Tarjan.ppt

  • 2017年08月01日 19:29
  • 506KB
  • 下载

强连通分量 Tarjan

转载来自http://www.cnblogs.com/saltless/archive/2010/11/08/1871430.html 和http://www.cnblogs.com/pony199...
  • tenlee
  • tenlee
  • 2014年11月16日 13:25
  • 836

Tarjan应用LCA

  • 2013年07月15日 16:08
  • 66KB
  • 下载

【POJ 1523】SPF(Tarjan求割点)

卧听声声慢,斜倚点点风
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tarjan
举报原因:
原因补充:

(最多只允许输入30个字)