QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#114560#852. JellyfishEastKing#RE 0ms0kbC++171.6kb2023-06-22 16:35:112023-06-22 16:35:13

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-06-22 16:35:13]
  • Judged
  • Verdict: RE
  • Time: 0ms
  • Memory: 0kb
  • [2023-06-22 16:35:11]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
const int M=2e5+5;
int n;
int head[M],asdf,du[M];
struct edge{
	int to,nxt;
}G[M<<1];
void add_edge(int a,int b){
	G[++asdf].to=b;
	G[asdf].nxt=head[a];
	head[a]=asdf;
}
int par[M];
int get_fa(int x){
	if(par[x]==x)return x;
	return par[x]=get_fa(par[x]);
}
int fa[M],dep[M];
void dfs(int x,int f){
	fa[x]=f;
	dep[x]=dep[f]+1;
	for(int i=head[x];i;i=G[i].nxt){
		int y=G[i].to;
		if(y==f)continue;
		dfs(y,x);
	}
}
int stk1[M],stk2[M];
int calc(int a,int b){
	int top1=0,top2=0;
	while(a!=b){
		if(dep[a]>=dep[b]){
			stk1[++top1]=a;
			a=fa[a];
		}else {
			stk2[++top2]=b;
			b=fa[b]; 
		}
	}
	stk1[++top1]=a;
	while(top2>0)stk1[++top1]=stk2[top2--];
	int len=0;
	for(int i=1;i<=top1;i++){
		int x=stk1[i];
		if(du[x]>2){
			stk2[++len]=i;
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++)ans+=(du[i]==1);
	if(len==0){
		return 3;
	}else if(len==1){
		return ans+2;
	}else {
		int mx=0;
		stk2[0]=stk2[len]-len;
		for(int i=1;i<=len;i++){
			mx=max(mx,(stk2[i]-stk2[i-1]-1));
		}
		return ans+mx;
	}
}
void solve(){
	asdf=0;
	for(int i=1;i<=n;i++){
		head[i]=0;
		du[i]=0;
		par[i]=i;
	}
	int ea=0,eb=0;
	for(int i=1;i<=n;i++){
		int a,b;
		scanf("%d %d",&a,&b);
		du[a]++;
		du[b]++;
		int x=get_fa(a);
		int y=get_fa(b);
		if(x==y){
			ea=a;
			eb=b;
		}else {
			par[x]=y;
			add_edge(a,b);
			add_edge(b,a);
		}
	}
	dfs(1,0);
	printf("%d\n",calc(ea,eb));
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	int cas;
	cin>>cas;
	while(cas--){
		cin>>n;
		solve();
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Runtime Error

input:

2
6
1 2
2 3
3 4
4 1
2 5
2 6
4
1 2
2 3
3 4
4 1

output:


result: