Submission #507679

# Submission time Handle Problem Language Result Execution time Memory
507679 2022-01-13T01:00:15 Z jamezzz Connecting Supertrees (IOI20_supertrees) C++17
56 / 100
235 ms 22648 KB
#include "supertrees.h"
#include <bits/stdc++.h>
using namespace std;

struct ufds{
	int par[1005],rnk[1005];
	void init(int n){
		for(int i=0;i<n;++i)par[i]=i,rnk[i]=0;
	}
	int fp(int i){return (par[i]==i)?i:par[i]=fp(par[i]);}
	void join(int x,int y){
		x=fp(x),y=fp(y);
		if(x==y)return;
		if(rnk[x]<rnk[y])par[x]=y;
		else par[y]=x;
		if(rnk[x]==rnk[y])++rnk[x];
	}
}u;

int construct(vector<vector<int>> p){
	int n=p.size();
	u.init(n);
	for(int i=0;i<n;++i){
		for(int j=0;j<n;++j){
			if(p[i][j]==3)return 0;
			if(p[i][j]!=p[j][i])return 0;
			if(p[i][j]!=0)u.join(i,j);
		}
	}
	vector<vector<int>> c1;
	c1.resize(n);
	for(int i=0;i<n;++i){
		c1[u.fp(i)].push_back(i);
		for(int j=0;j<n;++j){
			if(u.fp(i)==u.fp(j)&&p[i][j]==0){
				return 0;
			}
		}
	}

	u.init(n);
	for(int i=0;i<n;++i){
		for(int j=0;j<n;++j){
			if(p[i][j]==1)u.join(i,j);
		}
	}
	vector<vector<int>> c2,c3;
	c2.resize(n);
	c3.resize(n);
	for(int i=0;i<n;++i){
		c2[u.fp(i)].push_back(i);
		for(int j:c1[i]){
			if(u.fp(j)==j)c3[i].push_back(j);
		}
	}
	
	for(int i=0;i<n;++i){
		for(int a:c1[i]){
			for(int b:c1[i]){
				if(u.fp(a)!=u.fp(b)&&p[a][b]!=2){
					return 0;
				}
				if(u.fp(a)==u.fp(b)&&p[a][b]!=1){
					return 0;
				}
			}
		}
	}
	
	vector<vector<int>> answer;
	answer.resize(n);
	for(int i=0;i<n;++i)answer[i].resize(n);
	for(int i=0;i<n;++i){
		for(int j:c2[i]){
			if(i!=j)answer[i][j]=answer[j][i]=1;
		}
	}
	for(int i=0;i<n;++i){
		if(c3[i].size()>=2){
			int m=c3[i].size();
			for(int j=0;j<m;++j){
				int a=c3[i][j],b=c3[i][(j+1)%m];
				if(a!=b)answer[a][b]=answer[b][a]=1;
			}
		}
	}
	build(answer);
	return 1;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 296 KB Output is correct
2 Correct 0 ms 296 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 1 ms 296 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 8 ms 1168 KB Output is correct
7 Correct 235 ms 22372 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 296 KB Output is correct
2 Correct 0 ms 296 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 1 ms 296 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 8 ms 1168 KB Output is correct
7 Correct 235 ms 22372 KB Output is correct
8 Correct 0 ms 204 KB Output is correct
9 Correct 0 ms 292 KB Output is correct
10 Correct 0 ms 204 KB Output is correct
11 Correct 1 ms 204 KB Output is correct
12 Correct 8 ms 1244 KB Output is correct
13 Correct 178 ms 22492 KB Output is correct
14 Correct 0 ms 204 KB Output is correct
15 Correct 1 ms 204 KB Output is correct
16 Correct 5 ms 684 KB Output is correct
17 Correct 94 ms 8552 KB Output is correct
18 Correct 0 ms 204 KB Output is correct
19 Correct 0 ms 204 KB Output is correct
20 Correct 46 ms 6112 KB Output is correct
21 Correct 193 ms 22392 KB Output is correct
22 Correct 191 ms 22500 KB Output is correct
23 Correct 209 ms 22380 KB Output is correct
24 Correct 185 ms 22516 KB Output is correct
25 Correct 84 ms 8516 KB Output is correct
26 Correct 77 ms 8564 KB Output is correct
27 Correct 203 ms 22400 KB Output is correct
28 Correct 179 ms 22468 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 276 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Incorrect 1 ms 272 KB Answer gives possible 1 while actual possible 0
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 292 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 46 ms 6116 KB Output is correct
5 Correct 189 ms 22452 KB Output is correct
6 Correct 183 ms 22572 KB Output is correct
7 Correct 206 ms 22412 KB Output is correct
8 Correct 1 ms 280 KB Output is correct
9 Correct 45 ms 6108 KB Output is correct
10 Correct 186 ms 22644 KB Output is correct
11 Correct 180 ms 22648 KB Output is correct
12 Correct 202 ms 22436 KB Output is correct
13 Correct 1 ms 204 KB Output is correct
14 Correct 0 ms 204 KB Output is correct
15 Correct 1 ms 204 KB Output is correct
16 Correct 45 ms 6116 KB Output is correct
17 Correct 223 ms 22404 KB Output is correct
18 Correct 202 ms 22504 KB Output is correct
19 Correct 185 ms 22468 KB Output is correct
20 Correct 189 ms 22480 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 296 KB Output is correct
2 Correct 0 ms 296 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 1 ms 296 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 8 ms 1168 KB Output is correct
7 Correct 235 ms 22372 KB Output is correct
8 Correct 0 ms 204 KB Output is correct
9 Correct 0 ms 292 KB Output is correct
10 Correct 0 ms 204 KB Output is correct
11 Correct 1 ms 204 KB Output is correct
12 Correct 8 ms 1244 KB Output is correct
13 Correct 178 ms 22492 KB Output is correct
14 Correct 0 ms 204 KB Output is correct
15 Correct 1 ms 204 KB Output is correct
16 Correct 5 ms 684 KB Output is correct
17 Correct 94 ms 8552 KB Output is correct
18 Correct 0 ms 204 KB Output is correct
19 Correct 0 ms 204 KB Output is correct
20 Correct 46 ms 6112 KB Output is correct
21 Correct 193 ms 22392 KB Output is correct
22 Correct 191 ms 22500 KB Output is correct
23 Correct 209 ms 22380 KB Output is correct
24 Correct 185 ms 22516 KB Output is correct
25 Correct 84 ms 8516 KB Output is correct
26 Correct 77 ms 8564 KB Output is correct
27 Correct 203 ms 22400 KB Output is correct
28 Correct 179 ms 22468 KB Output is correct
29 Correct 1 ms 276 KB Output is correct
30 Correct 1 ms 204 KB Output is correct
31 Correct 1 ms 204 KB Output is correct
32 Incorrect 1 ms 272 KB Answer gives possible 1 while actual possible 0
33 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 296 KB Output is correct
2 Correct 0 ms 296 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 1 ms 296 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 8 ms 1168 KB Output is correct
7 Correct 235 ms 22372 KB Output is correct
8 Correct 0 ms 204 KB Output is correct
9 Correct 0 ms 292 KB Output is correct
10 Correct 0 ms 204 KB Output is correct
11 Correct 1 ms 204 KB Output is correct
12 Correct 8 ms 1244 KB Output is correct
13 Correct 178 ms 22492 KB Output is correct
14 Correct 0 ms 204 KB Output is correct
15 Correct 1 ms 204 KB Output is correct
16 Correct 5 ms 684 KB Output is correct
17 Correct 94 ms 8552 KB Output is correct
18 Correct 0 ms 204 KB Output is correct
19 Correct 0 ms 204 KB Output is correct
20 Correct 46 ms 6112 KB Output is correct
21 Correct 193 ms 22392 KB Output is correct
22 Correct 191 ms 22500 KB Output is correct
23 Correct 209 ms 22380 KB Output is correct
24 Correct 185 ms 22516 KB Output is correct
25 Correct 84 ms 8516 KB Output is correct
26 Correct 77 ms 8564 KB Output is correct
27 Correct 203 ms 22400 KB Output is correct
28 Correct 179 ms 22468 KB Output is correct
29 Correct 1 ms 276 KB Output is correct
30 Correct 1 ms 204 KB Output is correct
31 Correct 1 ms 204 KB Output is correct
32 Incorrect 1 ms 272 KB Answer gives possible 1 while actual possible 0
33 Halted 0 ms 0 KB -