QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#134897#6634. Central SubsetPlentyOfPenalty#WA 9ms7804kbC++201.4kb2023-08-05 09:49:132023-08-05 09:49:14

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-08-05 09:49:14]
  • 评测
  • 测评结果:WA
  • 用时:9ms
  • 内存:7804kb
  • [2023-08-05 09:49:13]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=2e5;
struct edge{
	int t,nxt;
}e[(N<<1)+10];
int T,n,D,m,u,v,f[N+10],be[N+10],cnt;
int fa[N+10],dep[N+10],mxd,vis[N+10],prt[N+10],sz;
char c;
int getf(int x){
	return f[x]==x?x:f[x]=getf(f[x]);
}
void scan(int&x){
	x=0;
	while(!isdigit(c=getchar()));
	while(isdigit(c))x=(x<<3)+(x<<1)+c-'0',c=getchar();
}
void add(int x,int y){
	e[++cnt]=(edge){y,be[x]},be[x]=cnt;
}
void Getdep(int x,int y){
	fa[x]=y,dep[x]=dep[y]+1;
	for(int i=be[x];i;i=e[i].nxt)if(e[i].t!=y)Getdep(e[i].t,x);
}
void Getmx(int x){
	if(!vis[x]&&dep[x]>mxd)mxd=dep[x],u=x;
	for(int i=be[x];i;i=e[i].nxt)if(e[i].t!=fa[x]&&!vis[e[i].t])Getmx(e[i].t);
}
void Mark(int x,int y){
	vis[x]=1;
	if(y==D)return;
	for(int i=be[x];i;i=e[i].nxt)if(!vis[e[i].t])Mark(e[i].t,y+1);
}
int main(){
	scan(T);
	while(T--){
		scanf("%d%d",&n,&m),D=sqrt(n);
		if(D*D<n)++D;
		for(int i=1;i<=n;++i)f[i]=i,be[i]=vis[i]=0;
		cnt=sz=0;
		for(int i=1;i<=m;++i){
			scan(u),scan(v);
			if(getf(u)!=getf(v))add(u,v),add(v,u),f[f[u]]=f[v];
		}
		Getdep(1,0);
		while(mxd=0,Getmx(1),mxd){
			for(int i=1;i<=D&&fa[u];++i)u=fa[u];
			prt[++sz]=u;
			Mark(u,0);
		}
		printf("%d\n",sz);
		for(int i=1;i<=sz;++i)printf("%d%c",prt[i]," \n"[i==sz]);
	}
	return 0;
}
/*
2
4 3
1 2
2 3
3 4

10 9
1 2
2 3
3 4 
4 5
5 6
6 7
7 8 
8 9
9 10
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 7700kb

input:

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

output:

1
2
1
1

result:

ok correct (2 test cases)

Test #2:

score: -100
Wrong Answer
time: 9ms
memory: 7804kb

input:

10000
15 14
13 12
5 4
9 8
11 12
15 14
10 9
14 13
2 3
2 1
6 5
10 11
3 4
7 6
8 7
6 5
2 1
2 4
4 6
2 3
3 5
10 9
8 3
9 4
5 6
5 10
3 2
5 4
2 7
1 2
4 3
2 1
2 1
2 1
2 1
9 8
9 8
5 4
1 2
6 5
3 4
3 2
7 8
7 6
2 1
1 2
14 13
3 10
5 6
2 9
11 4
2 3
2 1
8 7
13 6
5 4
5 12
6 7
4 3
7 14
16 15
2 3
2 1
6 10
6 9
6 4
9 11
...

output:

2
11 2
1
1
1
2
1
1
1
1
2
6 1
1
1
1
4
2
10 1
1
1
2
15 4
1
3
1
2
1
5
1
1
2
11 2
1
1
1
1
1
2
1
1
1
2
1
3
1
4
1
5
1
1
2
11 2
1
1
1
5
1
1
1
1
2
16 5
1
2
1
4
1
7
1
1
1
3
1
2
1
3
1
6
1
1
2
8 1
1
1
1
3
1
2
1
1
2
6 1
1
3
1
3
1
5
1
1
2
13 2
1
1
1
3
1
4
1
1
2
12 3
1
2
1
2
1
1
1
1
1
2
1
2
1
2
1
2
1
1
2
5 1
1
1
...

result:

wrong answer Condition failed: "getMaxBfsDist(n, subset) <= csqrtn" (test case 34)