NOIP2015信息传递 强连通分量 tarjan

原创 2016年08月30日 19:47:16
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=200000;
int sum=0;
int begin[maxn],to[2*maxn],next[2*maxn],w[2*maxn],ans[maxn];
int Index,e,top,dfn[maxn],low[maxn],stack[maxn],p[maxn];
inline void tarjan(int x){
	int i;
	dfn[x]=low[x]=++Index;
	stack[++top]=x;
	p[x]=1;
	for(i=begin[x];i;i=next[i]){
		int j=to[i];
		if(!dfn[j]){
			tarjan(j);
			low[x]=min(low[x],low[j]);
		}
		else if(p[j]){
			low[x]=min(low[x],dfn[j]);
		}
	}
	if(dfn[x]==low[x]){
		sum++;
		while(1){
			int tmp=stack[top--];
			ans[sum]++;
			p[tmp]=0;
			if(tmp==x)break;
		}
	}
}
inline void add(int x,int y){
	to[++e]=y;
	next[e]=begin[x];
	begin[x]=e;
}
int main(){
	int i,j,k,m,n;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		int x;
		scanf("%d",&x);
		add(i,x);
	}
	for(i=1;i<=n;i++)
		if(!dfn[i])
			tarjan(i);
	sort(ans+1,ans+sum+1);
	for(i=1;i<=sum;i++)
		if(ans[i]>1){
			printf("%d\n",ans[i]);return 0;}
	return 0;
}

版权声明:本文为hk原创文章,未经hk允许不得转载。

相关文章推荐

[NOIP2015提高组Day1T2]信息传递_强联通分量

找不到文字的就放图了 题解一开始想到很水的dfs(果然是因为最近常做淼题?) 结果wa一半的点,另一半刚好±1 经提示跑tarjan,找到最小的不是1的强联通分量 手工栈,手工栈,手工栈,学习了...
  • jpwang8
  • jpwang8
  • 2016年09月08日 21:51
  • 321

poj 2186 Popular Cows (Tarjan 强连通分量+压缩点)

考察算法:强连通分量+压缩点。 先说明下题目的大意。 有一群牛在相互崇拜。崇拜是单向的。且崇拜是可传递的,即a->b,b->c,可以得到a->c。 分别告诉你总共有n头牛,m条彼此间的崇拜关系,...

BZOJ-1051 受欢迎的牛 Tarjan求强连通分量+缩点DAG

居然到现在才学Tarjan,真是太弱了 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3646 S...
  • DaD3zZ
  • DaD3zZ
  • 2016年03月24日 21:31
  • 448

Tarjan强连通分量算法

转载自:http://www.cppblog.com/MatoNo1/archive/2011/07/28/150748.html

hdu1269 Tarjan强连通分量 模板

hdu1269 资料 师兄给的模板 /*2012-12-06 20:16:08 Accepted 1269 46MS 1484K 1339 B C++*/ #incl...

URAL 1198 Jobbery (强连通分量 Tarjan)

#include #define MAX_MEMBERS 2001 int numOfMembers; typedef struct Member{ int member; int next; ...

求强连通分量——Tarjan、Kosaraju算法

1、强连通分量

[hdu 5934 Bomb]Tarjan强连通分量

[hdu 5934 Bomb]Tarjan强连通分量题目链接:[hdu 5934 Bomb] 题意描述: 有NN个炸弹,第ii个炸弹的坐标是(xi,yi)(x_i,y_i), 半径为rir_i,手...

tarjan算法求解强连通分量

转自:点击打开链接 全网最详细tarjan算法讲解,我不敢说别的。反正其他tarjan算法讲解,我看了半天才看懂。我写的这个,读完一遍,发现原来tarjan这么简单! tarjan算法,一个关于 ...
  • CillyB
  • CillyB
  • 2017年02月23日 14:02
  • 350
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NOIP2015信息传递 强连通分量 tarjan
举报原因:
原因补充:

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