POJ2186 Popular Cows(强连通分量)

题意:

奶牛A觉得奶牛B流行,奶牛B觉得奶牛C流行,则奶牛A也觉得奶牛C流行,现在要统计被其他所有奶牛觉得流行的奶牛数量。

要点:

先求出强连通分量并缩成点,算出对应入度和出度,统计出度为0的奶牛数即可,一开始我是统计进度为cnt-1的,后来发现WA,错误的地方在题目里也说了,A->B->C这种也认为A觉得C流行,所以不能用入度算,只能计算出度为0的点,而且如果有好几个点出度为0要输出0

16068699 Seasonal 2186 Accepted 1240K 469MS C++ 1562B 2016-09-09 10:21:14
#include
#include
#include
#include
#include
using namespace std;
const int maxn=1e4+5;
vector g[maxn];
stack s;
int dfn[maxn],low[maxn],belong[maxn];
bool instack[maxn];
int in0[maxn],out0[maxn];
int dfs_clock,cnt,n,m;

void dfs(int u)
{
	dfn[u]=low[u]=++dfs_clock;
	s.push(u);
	instack[u]=true;
	for(int i=0;i1)
			printf("0\n");
		else if(count==1)
			printf("%d\n",sum);
	}
	return 0;
}


转载于:https://www.cnblogs.com/seasonal/p/10343688.html

你可能感兴趣的:(POJ2186 Popular Cows(强连通分量))