QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#140196#5413. 同构判定鸡Lynkcat#25 150ms4692kbC++173.3kb2023-08-15 11:59:462024-07-04 01:43:53

Judging History

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

  • [2024-07-04 01:43:53]
  • 评测
  • 测评结果:25
  • 用时:150ms
  • 内存:4692kb
  • [2023-08-15 11:59:46]
  • 提交

answer

#include<bits/stdc++.h>
#define poly vector<int>
#define ull unsigned long long 
#define IOS ios::sync_with_stdio(false)
#define ll long long
#define mp make_pair
#define mt make_tuple
#define pa pair < int,int >
#define fi first
#define se second
#define inf 1e18
#define mod 998244353
#define sz(x) (int)((x).size())
#define int ll
#define N 3005
using namespace std;
int id;
int n,m;
bitset<3005>f[3005];
int col[N];
poly G[3005];
mt19937_64 gen(time(0));
void BellaKira()
{
	cin>>n>>m;
	for (int i=1;i<=m;i++)
	{
		int x,y;
		cin>>x>>y;
	}
	if (id==1)
	{
		cin>>n>>m;
		cout<<n<<" "<<n/2*(n-n/2)<<'\n';
		for (int i=1;i<=n/2;i++)
			for (int j=n/2+1;j<=n;j++)
				cout<<i<<" "<<j<<'\n';
		return;
	}
	if (id==2)
	{
		int o,p;
		cin>>o>>p;
		int tot=0;
		n--;
		for (int i=1;i<=o;i++)
			for (int j=i+1;j<=o;j++)
				if (i%n!=j%n) tot++;
		cout<<o<<" "<<tot<<'\n';
		for (int i=1;i<=o;i++)
			for (int j=i+1;j<=o;j++)
				if (i%n!=j%n) 
					cout<<i<<" "<<j<<'\n';
		return;
	}
	cin>>n>>m;
	for (int i=1;i<=n;i++)
		for (int j=1;j<=n;j++) 
			f[i][j]=0;
	int lst=0;
	int tot=0;
	int mx=0,mxtim=0;
	ull seed=gen();
	mt19937_64 rnd(seed);
	const int B=100000000;
	for (int tms=0;tms<=1000000;tms++)
	{
		if (id==3&&mx>=2*n)
		{
			mxtim=tms;
			break;
		}
		if (tot>mx)
		{
			mx=tot,mxtim=tms;
		}
		
		if (lst>=B)
		{
			int x,y;
			x=rnd()%n+1,y=rnd()%n+1;
			while (x==y||!f[x][y]) 
				x=rnd()%n+1,y=rnd()%n+1;
			f[x][y]=f[y][x]=0;
			G[x].erase(find(G[x].begin(),G[x].end(),y));
			G[y].erase(find(G[y].begin(),G[y].end(),x));
			lst=0;
			tot--;
			continue;
		}
		int x,y;
		x=rnd()%n+1,y=rnd()%n+1;
		while (x==y||f[x][y]) 
			x=rnd()%n+1,y=rnd()%n+1;
		for (auto u:G[y])
			col[u]=1;
		bool bl=1;
		for (auto u:G[x])
		{
			for (auto v:G[u])
				if (col[v]) bl=0;
		}
		if (bl)
		{
			f[x][y]=1;
			f[y][x]=1;
			G[x].push_back(y);
			G[y].push_back(x);
			tot++;
		} else lst++;
		for (auto u:G[y]) col[u]=0;
	}

	for (int i=1;i<=n;i++)
		for (int j=1;j<=n;j++) 
			f[i][j]=0;
	for (int i=1;i<=n;i++)	poly().swap(G[i]);

	mt19937_64 rnd1(seed);
	lst=0;tot=0;
	for (int tms=0;tms<mxtim;tms++)
	{
		if (lst>=B)
		{
			int x,y;
			x=rnd1()%n+1,y=rnd1()%n+1;
			while (x==y||!f[x][y]) 
				x=rnd1()%n+1,y=rnd1()%n+1;
			f[x][y]=f[y][x]=0;
			G[x].erase(find(G[x].begin(),G[x].end(),y));
			G[y].erase(find(G[y].begin(),G[y].end(),x));
			lst=0;
			tot--;
			// cout<<"Ers "<<x<<" "<<y<<endl;
			continue;
		}
		int x,y;
		x=rnd1()%n+1,y=rnd1()%n+1;
		while (x==y||f[x][y]) 
			x=rnd1()%n+1,y=rnd1()%n+1;
		for (auto u:G[y])
			col[u]=1;
		bool bl=1;
		for (auto u:G[x])
		{
			for (auto v:G[u])
				if (col[v]) bl=0;
		}
		if (bl)
		{
			f[x][y]=1;
			f[y][x]=1;
			G[x].push_back(y);
			G[y].push_back(x);
			tot++;
		} else lst++;
		for (auto u:G[y]) col[u]=0;
	}
	
	tot=0;
	for (int i=1;i<=n;i++)
		for (int j=i+1;j<=n;j++)
			if (f[i][j]) tot++;
	cout<<n<<" "<<tot<<'\n';
	for (int i=1;i<=n;i++)
		for (int j=i+1;j<=n;j++)
			if (f[i][j])
			{
				cout<<i<<" "<<j<<'\n';
				f[i][j]=f[j][i]=0;
			}
	for (int i=1;i<=n;i++) poly().swap(G[i]);
}
signed main()
{
	IOS;
	cin.tie(0);
	int T=1;cin>>T>>id;
	while (T--)
	{
		BellaKira();
	}
}

詳細信息

Test #1:

score: 5
Accepted
time: 3ms
memory: 3868kb

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: 10
Accepted
time: 3ms
memory: 3736kb

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:

28 294
1 2
1 3
1 4
1 6
1 7
1 8
1 10
1 11
1 12
1 14
1 15
1 16
1 18
1 19
1 20
1 22
1 23
1 24
1 26
1 27
1 28
2 3
2 4
2 5
2 7
2 8
2 9
2 11
2 12
2 13
2 15
2 16
2 17
2 19
2 20
2 21
2 23
2 24
2 25
2 27
2 28
3 4
3 5
3 6
3 8
3 9
3 10
3 12
3 13
3 14
3 16
3 17
3 18
3 20
3 21
3 22
3 24
3 25
3 26
3 28
4 5
4 6
4 ...

result:

ok correct! (10 test cases)

Test #3:

score: 10
Accepted
time: 150ms
memory: 4692kb

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:

387 774
1 100
2 24
2 76
2 86
2 135
2 283
3 45
3 113
3 226
3 237
3 288
3 385
4 65
4 152
4 165
5 279
5 332
5 333
6 9
6 236
6 385
7 141
8 34
8 41
8 173
8 309
9 105
9 197
9 237
9 250
9 277
10 76
10 176
10 263
11 126
11 163
11 246
11 324
11 330
12 19
12 145
12 254
13 172
13 309
13 348
14 28
14 120
14 213...

result:

ok correct! (10 test cases)

Test #4:

score: 0
Time Limit Exceeded

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: