QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#634422#9453. Graph Generatorucup-team3510#AC ✓166ms23592kbC++141.6kb2024-10-12 17:17:312024-10-12 17:17:32

Judging History

你现在查看的是测评时间为 2024-10-12 17:17:32 的历史记录

  • [2024-10-14 16:53:45]
  • 自动重测本题所有获得100分的提交记录
  • 测评结果:AC
  • 用时:171ms
  • 内存:23732kb
  • [2024-10-14 16:52:42]
  • hack成功,自动添加数据
  • (/hack/991)
  • [2024-10-12 17:17:32]
  • 评测
  • 测评结果:100
  • 用时:166ms
  • 内存:23592kb
  • [2024-10-12 17:17:31]
  • 提交

answer

#include <bits/stdc++.h>
#define N 100011
#define pii pair<int,int>
#define s1 first
#define s2 second
using namespace std;
int t,n,m;vector<int> G[N],nG[N];
int deg[N],fa[N],siz[N];bool vis[N];
int get(int a){return fa[a]==a?a:fa[a]=get(fa[a]);}
void merge(int a,int b)
{
	a=get(a);b=get(b);
	if(a==b)return;
	fa[b]=a;siz[a]+=siz[b];
}
vector<pii> vv;
vector<int> ans[N];
int main()
{
	scanf("%d",&t);while(t--)
	{
		scanf("%d%d",&n,&m);
		for(int i=1;i<=n;++i)G[i].clear(),nG[i].clear(),deg[i]=0;
		for(int i=1;i<=m;++i)
		{
			int u,v;scanf("%d%d",&u,&v);
			G[u].push_back(v);G[v].push_back(u);
			++deg[u];++deg[v];
		}
		for(int i=1;i<=n;++i)
		{
			fa[i]=i;vis[i]=0;siz[i]=1;
		}
		vv.clear();
		for(int i=1;i<=n;++i)vv.push_back({deg[i],i});
		sort(vv.begin(),vv.end());
		// printf("vv:");for(pii x:vv)printf("{%d,%d} ",x.s1,x.s2);putchar(10);
		for(int i=1;i<=n;++i)
		{
			for(int j:G[i])if(deg[i]>deg[j]||deg[i]==deg[j]&&i>j)nG[i].push_back(j);
		}
		for(int i=1;i<=n;++i)ans[i].clear();
		bool ok=1;
		for(int i=0;i<vv.size();++i)
		{
			int u=vv[i].s2;
			for(int v:nG[u])if(!vis[get(v)])ans[u].push_back(v),vis[get(v)]=1;
			int sz=0;
			for(int v:nG[u])if(vis[get(v)])sz+=siz[get(v)],vis[get(v)]=0;
			if(sz!=nG[u].size())
			{
				ok=0;break;
			}
			for(int v:ans[u])merge(u,v);
		}
		if(!ok)
		{
			printf("No\n");
		}
		else
		{
			printf("Yes\n");
			for(int i=0;i<vv.size();++i)
			{
				int u=vv[i].s2;
				printf("%d %d ",u,(int)ans[u].size());
				for(int v:ans[u])printf("%d ",v);putchar(10);
			}
		}
	}
}

这程序好像有点Bug,我给组数据试试?

详细

Test #1:

score: 100
Accepted
time: 3ms
memory: 12196kb

input:

3
3 0
4 4
1 2
2 3
3 4
2 4
5 5
1 2
2 3
3 4
4 5
2 4

output:

Yes
1 0 
2 0 
3 0 
Yes
1 0 
3 0 
4 1 3 
2 2 1 3 
No

result:

ok 3 cases passed

Test #2:

score: 0
Accepted
time: 166ms
memory: 23592kb

input:

4176
10 15
1 4
9 1
3 7
8 1
2 1
5 4
5 1
10 1
7 1
10 7
10 3
6 4
3 1
6 1
9 2
7 10
6 7
1 7
1 4
7 2
4 2
5 2
3 1
1 6
2 6
5 1
6 8
5 2
3 1
4 6
2 1
5 1
1 4
6 2
6 1
9 15
5 1
4 2
7 1
1 8
2 3
5 8
1 9
4 3
6 5
9 2
3 1
4 1
7 2
9 7
1 6
6 11
1 2
3 5
3 1
3 2
4 3
1 6
4 2
1 4
5 4
5 1
5 2
6 6
1 6
6 3
1 3
1 5
4 2
2 1
10 ...

output:

Yes
8 0 
2 0 
5 0 
6 0 
9 1 2 
3 0 
4 2 5 6 
7 1 3 
10 1 7 
1 4 4 9 8 10 
No
No
No
Yes
6 0 
2 0 
3 1 2 
4 1 3 
5 1 3 
1 2 2 6 
No
No
Yes
2 0 
3 0 
7 1 3 
4 0 
5 1 4 
6 1 4 
1 3 4 2 7 
Yes
4 0 
5 0 
7 0 
8 0 
9 0 
6 0 
10 0 
3 2 6 10 
2 5 5 10 7 9 8 
1 2 8 4 
Yes
9 0 
4 0 
6 0 
7 0 
8 0 
5 2 7 8 
2 2...

result:

ok 4176 cases passed

Extra Test:

score: 0
Extra Test Passed