上白泽慧音,洛谷之提高历练地,较复杂图论II

正题

      第二题:上白泽慧音

      这道题就是裸裸的Tarjan强联通咯~

      我们找出每个环,判断一下每个环的大小。排一下序输出即可。

代码<模板要背熟>

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

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

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

void Tarjan(int x){
	we[x]=true;
	op[x].dfn=op[x].low=++now;
	tf[x]=true;f.push(x);
	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].lowmmax){
			mmax=T[tot].size();
			maxi=tot;
		}
		else if(T[tot].size()==mmax && T[tot][0]


你可能感兴趣的:(上白泽慧音,洛谷之提高历练地,较复杂图论II)