[HAOI2006]受欢迎的牛,洛谷之提高历练地,强连通分量

正题

      [HAOI2006]受欢迎的牛

      其实这道题就是求缩点之后,入度为0的环的大小。

      我们跑一便Tarjan缩点之后,记录每个点所在环的编号和大小即可。

#include
#include
#include
#include
#include
using namespace std;

int n,m;
int first[10010];
struct edge{
	int x,y,next;
}s[100010];
struct node{
	int dfn,low;
}op[10010];
int len=0;
bool we[10010];
bool tf[10010];
int where[10010];
int diss[10010];
int node=0;
int tot=0,now=0;
vector T[10010];
stack f;

void ins(int x,int y){
	len++;
	s[len].x=x;s[len].y=y;s[len].next=first[x];first[x]=len;
}

void Tarjan(int x){
	tf[x]=true;f.push(x);
	op[x].dfn=op[x].low=++now;
	for(int i=first[x];i!=0;i=s[i].next){
		int y=s[i].y;
		if(op[y].dfn==0){
			Tarjan(y);
			if(op[y].low

你可能感兴趣的:([HAOI2006]受欢迎的牛,洛谷之提高历练地,强连通分量)