SCC Tarjan算法

原创 2013年12月05日 13:55:14


int dfs_clock,scc_cnt;
int low[maxn],dfn[maxn],sccno[maxn];  //sccno[i]为i所在的SCC编号
stack<int>S;
vector<int>map[maxn];
void tarjan( int u, int fa )
{
    low[u] = dfn[u] = ++dfs_clock;
	S.push(u);
    for( int i = 0; i < map[u].size(); i ++ )
    {
        int v = map[u][i];
        if( !dfn[v] )
        {
            tarjan( v,u );
            low[u] = low[u] <= low[v] ? low[u]:low[v];   //用后代low更新自己
        }
        else if( !sccno[v] )     //用反向边更新自己
		{
            low[u] = low[u] <= dfn[v] ? low[u]:dfn[v];
		}
    }
	if( low[u] == dfn[u] ){
		scc_cnt ++;
		for(;;)
		{
			int x = S.top(); S.pop();
			sccno[x] = scc_cnt;
			if( x == u )
				break;
		}
	}
}

void find_scc()
{
	dfs_clock = scc_cnt = 0;
	while( !S.empty() )	S.pop();  
	memset( low,0,sizeof(low) );
    memset( dfn,0,sizeof(dfn) );
	memset( sccno,0,sizeof(sccno) );
	for( int i = 0; i < n; i ++ )
	{
		if( !dfn[i] )
			tarjan( i,-1 );
	}
}


求有向图的强连通分量(scc):Tarjan算法

Tarjan#include #include using namespace std;const int MAX=10001;int Stop;//栈中的元素个数 int cnt;//记录连通分量的...

hdoj 3062 Party 【2-sat入门 :布尔表达式建边 有向图tarjan求SCC】 【离散没学好是硬伤】

Party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su...

HDU 3072 Intelligence System (tarjan-scc缩点 + 最小树形图)

题意: 给了一个含有N
  • lwt36
  • lwt36
  • 2015年11月04日 00:26
  • 317

poj 3648 Wedding 【2-sat 经典建图 输出一组可行解 好题】 【tarjan求SCC + 缩点 + 拓扑排序 + 染色】

Wedding Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8891   Accepted: 2678   S...

【东方模拟赛】【模板】上白泽慧音 tarjan找scc

又是裸题,丢个模板跑代码:#include #include #include #include #include #include using namespace std;const int SIZ...
  • LOI_DQS
  • LOI_DQS
  • 2015年11月04日 15:24
  • 892

【POJ1236】【tarjan】【SCC强连通】

Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13509   Accept...

【Tarjan】【SCC】【拓扑排序】Graph practice T3 graph 题解

Problem 3. graph Input file: graph.in Output file: graph.out Time limit: 1 second jyb 给大家讲过强连通分量...

有向图tarjan 求桥 + 求SCC以及里面的点和它的入度 +缩点 模板 【总结】

引子;给出n个点以及m条单向边  求桥 + 求SCC以及里面的点和它的入度 + 缩点模板 。 #include #include #include #include #includ...

hdoj 1827 Summer Holiday 【有向图 连通最少的点来间接连通所有点】 【tarjan求 SCC + 缩点】

Summer Holiday Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

不是图论 【tarjan求scc】+【缩点】

给出一个n个点,m条边的有向图。每个点上有分值,经过这个点时可以获得一定的分数。一个点可以经过多次,但是一个点上的分数只能获得一次。问最多能获得多少分数,起点任选。1...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SCC Tarjan算法
举报原因:
原因补充:

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