QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#208532#6421. Degree of Spanning TreeqzhwlzyWA 761ms6244kbC++141.5kb2023-10-09 18:31:042023-10-09 18:31:04

Judging History

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

  • [2023-10-09 18:31:04]
  • 评测
  • 测评结果:WA
  • 用时:761ms
  • 内存:6244kb
  • [2023-10-09 18:31:04]
  • 提交

answer

#include<iostream>
#include<cstdio>
#define maxn 100005
#define maxm 200005
using namespace std;
int T,n,m,x[maxm],y[maxm],f[maxn],fa[maxn],deg[maxn],pos; bool vis[maxm],rt[maxn];
struct{int to,nex;}a[maxn]; int head[maxn],cnt=0;
void add(int from,int to){a[++cnt].to=to; a[cnt].nex=head[from]; head[from]=cnt;}
int getfa(int p){return f[p]==p?p:getfa(f[p]);}
void dfs(int p,int fat){
	for(int i=head[p];i;i=a[i].nex) if(a[i].to!=fat)
		{if(p!=pos){int r1=getfa(p),r2=getfa(a[i].to); f[r2]=r1;}else rt[a[i].to]=1; dfs(a[i].to,p);}
}
int main(){
	scanf("%d",&T); while(T--){
		scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) head[i]=deg[i]=0,f[i]=i; cnt=0;
		for(int i=1;i<=m;i++) scanf("%d%d",&x[i],&y[i]),vis[i]=0;
		for(int i=1;i<=m;i++){
			int r1=getfa(x[i]),r2=getfa(y[i]); if(r1==r2) continue;
			f[r2]=r1; add(x[i],y[i]); add(y[i],x[i]); vis[i]=1; deg[x[i]]++; deg[y[i]]++;
		}
		pos=-1; for(int i=1;i<=n;i++){
			if(deg[i]>n/2){pos=i; break;}
			if(i==n){printf("Yes\n"); for(int i=1;i<=m;i++) if(vis[i]) printf("%d %d\n",x[i],y[i]);}
		} if(pos==-1) continue; for(int i=1;i<=n;i++) f[i]=i; dfs(pos,-1);
		for(int i=1;i<=m;i++) if(!vis[i]){
			int r1=getfa(x[i]),r2=getfa(y[i]); if(r1!=r2&&deg[x[i]]<n/2&&deg[y[i]]<n/2){
				f[r1]=r2; deg[pos]--; deg[r1]--; deg[x[i]]++; deg[y[i]]++; vis[i]=1; rt[r1]=0;
			}
		} if(deg[pos]>n/2){printf("No\n"); continue;} printf("Yes\n"); int cnt=0;
		for(int i=1;i<=m&&cnt<n;i++) if(vis[i]&&!((x[i]==pos&&!rt[y[i]])||(y[i]==pos&&!rt[x[i]])))
			printf("%d %d\n",x[i],y[i]),cnt++;
	} return 0;
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 6000kb

input:

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

output:

Yes
1 2
1 3
1 4
4 5
4 6
No

result:

ok 2 cases

Test #2:

score: -100
Wrong Answer
time: 761ms
memory: 6244kb

input:

11140
10 15
9 6
5 7
6 5
2 3
7 5
7 5
3 10
9 7
5 5
9 1
7 5
2 8
7 5
4 3
6 2
9 19
3 7
3 9
2 8
2 8
3 6
5 1
1 8
8 9
8 3
4 8
5 5
3 1
4 3
1 3
8 6
1 3
7 4
4 3
8 8
12 20
10 2
5 5
2 4
3 3
3 3
5 11
9 2
5 5
7 12
11 3
3 3
3 5
5 3
3 1
4 6
7 11
6 8
4 5
6 12
6 5
8 18
4 2
4 3
2 4
2 4
4 3
4 8
2 2
6 7
2 4
6 2
1 4
8 7
4...

output:

Yes
9 6
5 7
6 5
2 3
3 10
9 1
2 8
4 3
6 2
Yes
3 7
3 9
2 8
3 6
5 1
1 8
8 9
4 8
Yes
10 2
2 4
5 11
9 2
7 12
11 3
3 1
4 6
7 11
6 8
4 5
Yes
4 2
4 3
4 8
6 7
6 2
1 4
7 5
Yes
6 5
5 7
5 9
4 3
2 9
2 3
8 7
5 1
Yes
10 2
2 6
3 2
1 9
8 10
4 6
6 1
2 5
1 7
Yes
5 7
5 4
7 1
2 6
6 7
1 3
Yes
12 3
1 13
7 8
8 2
10 6
1 6
1...

result:

wrong answer case 120, participant does not find a solution but the jury does