QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#140154#5413. 同构判定鸡1kri#5 11ms41968kbC++142.0kb2023-08-15 10:25:142024-07-04 01:43:09

Judging History

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

  • [2024-07-04 01:43:09]
  • 评测
  • 测评结果:5
  • 用时:11ms
  • 内存:41968kb
  • [2023-08-15 10:25:14]
  • 提交

answer

#include <iostream>
#include <cstdio>
#include <cstring>
#include <bitset>
#include <random>
#include <chrono>
#include <algorithm>
using namespace std;
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
int t,sub_id,n,m,N,M;
int book[3005][3005];
int tot,sta[1000005][2];
void add(int x,int y){
	if (x==y||book[x][y]==1||book[y][x]==1)return;
	++tot;
	sta[tot][0]=x,sta[tot][1]=y;
	book[x][y]=book[y][x]=1;
	return;
}
void out(){
	printf("%d %d\n",N,tot);
	for (int i=1;i<=tot;i++)printf("%d %d\n",sta[i][0],sta[i][1]);
	return;
}
bool prime(int x){
	if (x<2)return 0;
	for (int i=2;i*i<=x;i++)
		if (x%i==0)return 0;
	return 1;
}
pair<int,int> e[1000005];
bitset<350> qwq[350];
int main(){
	scanf("%d%d",&t,&sub_id);
	while(t--){
		scanf("%d%d",&n,&m);
		for (int i=1;i<=m;i++){
			int x,y;
			scanf("%d%d",&x,&y);
		}
		scanf("%d%d",&N,&M);
		tot=0;
		memset(book,0,sizeof(book));
		if (sub_id==1){
			for (int i=1;i<=N/2;i++)
				for (int j=N/2+1;j<=N;j++)
					add(i,j);
			out();
		}
		if (sub_id==2){
			for (int i=1;i<=N;i++)
				for (int j=i+1;j<=N;j++)
					if (i%(n-1)!=j%(n-1))add(i,j);
			out();
		}
		if (sub_id==3||sub_id==4||sub_id==5){
			int p=-1;
			for (int i=N;i>=1;i--)
				if (i*i<=N/2&&prime(i)){
					p=i;
					break;
				}
			int id=p*p;
			for (int i=0;i<p;i++)
				for (int d=0;d<p;d++){
					int s=++id;
					for (int j=0,t=i;j<p;j++,t=(t+d)%p)
						add(s,j*p+t+1);
				}
			out();
		}
		if (sub_id==6){
			for (int i=1;i<=N;i++)qwq[i].reset();
			int e_tot=0;
			for (int i=1;i<=N;i++)
				for (int j=i+1;j<=N;j++)
					e[++e_tot]=make_pair(i,j);
			shuffle(e+1,e+1+e_tot,rnd);
			for (int i=1;i<=e_tot;i++){
				int x=e[i].first,y=e[i].second;
				qwq[x][y]=qwq[y][x]=1;
				int fg=1;
				for (int k=1;k<=N&&fg==1;k++){
					if (k!=x&&(qwq[k]&qwq[x]).count()>3)fg=0;
					if (k!=y&&(qwq[k]&qwq[y]).count()>3)fg=0;
				}
				if (fg==1)add(x,y);
				else qwq[x][y]=qwq[y][x]=0;
			}
			out();
		}
	}
	return 0;
}

详细

Test #1:

score: 5
Accepted
time: 11ms
memory: 41968kb

input:

10 1
3 3
1 2
1 3
2 3
33 272
3 3
1 2
1 3
2 3
28 196
3 3
1 2
1 3
2 3
92 2116
3 3
1 2
1 3
2 3
29 210
3 3
1 2
1 3
2 3
62 961
3 3
1 2
1 3
2 3
97 2352
3 3
1 2
1 3
2 3
60 900
3 3
1 2
1 3
2 3
70 1225
3 3
1 2
1 3
2 3
67 1122
3 3
1 2
1 3
2 3
67 1122

output:

33 272
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
2 17
2 18
2 19
2 20
2 21
2 22
2 23
2 24
2 25
2 26
2 27
2 28
2 29
2 30
2 31
2 32
2 33
3 17
3 18
3 19
3 20
3 21
3 22
3 23
3 24
3 25
3 26
3 27
3 28
3 29
3 30
3 31
3 32
3 33
4 17
4 18
4 19
4 20
4 21
4 22
4 23
4 2...

result:

ok correct! (10 test cases)

Test #2:

score: 0
Checker Judgement Failed

input:

10 2
5 10
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5
28 293
8 28
1 2
1 3
1 4
1 5
1 6
1 7
1 8
2 3
2 4
2 5
2 6
2 7
2 8
3 4
3 5
3 6
3 7
3 8
4 5
4 6
4 7
4 8
5 6
5 7
5 8
6 7
6 8
7 8
8 26
4 6
1 2
1 3
1 4
2 3
2 4
3 4
82 2240
3 3
1 2
1 3
2 3
46 528
4 6
1 2
1 3
1 4
2 3
2 4
3 4
42 587
9 36
1 2
1 3
1 4
1 5
1 6
1 ...

output:


result:


Test #3:

score: 0
Judgement Failed

input:

10 3
4 4
1 2
2 3
3 4
4 1
387 774
4 4
1 2
2 3
3 4
4 1
668 1336
4 4
1 2
2 3
3 4
4 1
1403 2806
4 4
1 2
2 3
3 4
4 1
1516 3032
4 4
1 2
2 3
3 4
4 1
1601 3202
4 4
1 2
2 3
3 4
4 1
1649 3298
4 4
1 2
2 3
3 4
4 1
1722 3444
4 4
1 2
2 3
3 4
4 1
1854 3708
4 4
1 2
2 3
3 4
4 1
1926 3852
4 4
1 2
2 3
3 4
4 1
1989 3978

output:


result:


Test #4:

score: 0
Judgement Failed

input:

10 4
4 4
1 2
2 3
3 4
4 1
169 1014
4 4
1 2
2 3
3 4
4 1
529 5819
4 4
1 2
2 3
3 4
4 1
841 11774
4 4
1 2
2 3
3 4
4 1
961 14415
4 4
1 2
2 3
3 4
4 1
1369 24642
4 4
1 2
2 3
3 4
4 1
1681 33620
4 4
1 2
2 3
3 4
4 1
1849 38829
4 4
1 2
2 3
3 4
4 1
361 3249
4 4
1 2
2 3
3 4
4 1
289 2312
4 4
1 2
2 3
3 4
4 1
9 9

output:


result:


Test #5:

score: 0
Judgement Failed

input:

1 5
4 4
1 2
2 3
3 4
4 1
2850 24300

output:


result:


Test #6:

score: 0
Judgement Failed

input:

1 6
6 9
1 4
1 5
1 6
2 4
2 5
2 6
3 4
3 5
3 6
343 2350

output:


result: