QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#187635#6634. Central SubsetqzzyqWA 9ms15752kbC++142.2kb2023-09-24 19:21:352023-09-24 19:21:35

Judging History

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

  • [2023-09-24 19:21:35]
  • 评测
  • 测评结果:WA
  • 用时:9ms
  • 内存:15752kb
  • [2023-09-24 19:21:35]
  • 提交

answer

#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define maxn 200005
#define put() putchar('\n')
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
using namespace std;
void read(int &x){
    int f=1;x=0;char c=getchar();
    while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
    while (c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();}
    x*=f;
}
namespace Debug{
	Tp void _debug(char* f,Ty t){cerr<<f<<'='<<t<<endl;}
	Ts void _debug(char* f,Ty x,Ar... y){while(*f!=',') cerr<<*f++;cerr<<'='<<x<<",";_debug(f+1,y...);}
	Tp ostream& operator<<(ostream& os,vector<Ty>& V){os<<"[";for(auto& vv:V) os<<vv<<",";os<<"]";return os;}
	#define gdb(...) _debug((char*)#__VA_ARGS__,__VA_ARGS__)
}using namespace Debug;
#define fi first
#define se second
#define mk make_pair
const int mod=1e9+7;
int power(int x,int y=mod-2) {
	int sum=1;
	while (y) {
		if (y&1) sum=sum*x%mod;
		x=x*x%mod;y>>=1;
	}
	return sum;
}
int n,m;
vector<int>to[maxn];
int h[maxn],head=1;
struct yyy{
	int to,z;
	void add(int x,int y) {
		to=y;z=h[x];h[x]=head;
	}
}a[maxn*10];
int vis[maxn],ans[maxn],cnt,block,total,siz[maxn],son[maxn];
void dfs3(int x,int pre) {
	int i;
	vis[x]=1;siz[x]=0;son[x]=0;
 	for (i=h[x];i;i=a[i].z) if (!vis[a[i].to]) {
		int y=a[i].to;
		dfs3(y,x);
		if (!son[x]||siz[y]+1>siz[x]) son[x]=y,siz[x]=siz[y]+1;
	}
}
void dfs(int x,int deep) {
	if (deep==0) ans[++cnt]=x,deep=block+1;
 	vis[x]=1;int sum=deep,i;
// 	dfs(son[x],deep-1);
// 	if (sum>=siz[son[x]]+1) 
 	for (i=h[x];i;i=a[i].z) if (!vis[a[i].to]) {
 		int y=a[i].to;
		dfs(y,sum-1);
		if (sum>=siz[y]+1) ;
		else sum=max(sum,block+1-sum);
	}
}
void solve(void) {
	int i,x,y;
	read(n);read(m);
	block=sqrt(n);block+=(block*block!=n);
	for (i=1;i<=n;i++) h[i]=0,vis[i]=0,siz[i]=0;cnt=0;
	
	for (i=1;i<=m;i++) {
		read(x),read(y);
		a[++head].add(x,y);
		a[++head].add(y,x);
	}
	dfs3(1,0);
	for (i=1;i<=n;i++) vis[i]=0;
	dfs(1,0);
	if (cnt==0) ans[cnt=1]=1;
	printf("%d\n",cnt);
	for (i=1;i<=cnt;i++) printf("%d ",ans[i]);put();
}
signed main(void){
	++total;
	int T;read(T);while (T--) solve(),++total;
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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:

2
1 4 
1
1 

result:

ok correct (2 test cases)

Test #2:

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

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:

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

result:

wrong answer Integer 5 violates the range [1, 4] (test case 9)