Submission #984323

# Submission time Handle Problem Language Result Execution time Memory
984323 2024-05-16T13:25:16 Z CSQ31 Connecting Supertrees (IOI20_supertrees) C++17
56 / 100
167 ms 36180 KB
#include "supertrees.h"
#include<bits/stdc++.h>
using namespace std;
#define sz(a) (int)(a.size())
int p[1111][1111],q[1111][1111],ans[1111][1111];
void add(int v,int u){
	ans[v][u] = ans[u][v] = 1;
}
int construct(vector<vector<int>> P) {
	int n = sz(P);
	for (int i=0;i<n;i++){
		if(P[i][i] != 1)return 0;
		for(int j=0;j<n;j++){
			p[i][j] = P[i][j];
			if(p[i][j] == 3)return 0;
		}
	}
	//find all nodes connected to 1
	//then nodes with p(1,v) = 1
	//this has to form a tree
	//repeat forming many trees then link the trees in a cycle
	vector<int>ded(n,0);
	for(int v=0;v<n;v++){
		if(ded[v])continue;
		vector<int>comp,ori;
		vector<bool>incomp(n,0);
		for(int j=0;j<n;j++){
			if(ded[j])continue;
			if(p[v][j]){
				incomp[j] = 1;
				comp.push_back(j);
				ded[j] = 1;
			}
		}
		for(int x:comp){
			for(int y:comp){
				if(!p[x][y])return 0;
			}
		}
		vector<vector<int>>trees;
		while(!comp.empty()){
			int v = comp[0];
			vector<int>tree,tmp;
			for(int u:comp){
				if(p[u][v] == 1)tree.push_back(u);
				else tmp.push_back(u);
			}
			trees.push_back(tree);
			comp = tmp;
		}
		int ss = sz(trees);
		if(ss > 1)add(trees[0][0],trees[ss-1][0]);
		for(int i=0;i<ss;i++){
			if(i+1<sz(trees))add(trees[i][0],trees[i+1][0]);
			for(int j=0;j+1<sz(trees[i]);j++)add(trees[i][j],trees[i][j+1]);

			vector<bool>intree(n,0);
			for(int x:trees[i])intree[x] = 1;
			for(int x:trees[i]){
				for(int y:trees[i])q[x][y] = 1;
				for(int j=0;j<n;j++){
					if(incomp[j] && !intree[j])q[x][j] = q[j][x] = 2;
				}
			}
		}
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(q[i][j] != p[i][j])return 0;
		}
	}
	vector<vector<int>>fin(n);
	for(int i=0;i<n;i++){
		fin[i].assign(n,0);
		for(int j=0;j<n;j++)fin[i][j] = ans[i][j];
	}
	build(fin);
	return 1;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4444 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 2 ms 4444 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 1 ms 4444 KB Output is correct
6 Correct 7 ms 9472 KB Output is correct
7 Correct 149 ms 36132 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4444 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 2 ms 4444 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 1 ms 4444 KB Output is correct
6 Correct 7 ms 9472 KB Output is correct
7 Correct 149 ms 36132 KB Output is correct
8 Correct 1 ms 4444 KB Output is correct
9 Correct 1 ms 4444 KB Output is correct
10 Correct 1 ms 4444 KB Output is correct
11 Correct 1 ms 4444 KB Output is correct
12 Correct 8 ms 7488 KB Output is correct
13 Correct 158 ms 31900 KB Output is correct
14 Correct 1 ms 4444 KB Output is correct
15 Correct 1 ms 2396 KB Output is correct
16 Correct 3 ms 4700 KB Output is correct
17 Correct 63 ms 13840 KB Output is correct
18 Correct 1 ms 4440 KB Output is correct
19 Correct 1 ms 2392 KB Output is correct
20 Correct 37 ms 16212 KB Output is correct
21 Correct 148 ms 36180 KB Output is correct
22 Correct 147 ms 36124 KB Output is correct
23 Correct 151 ms 36080 KB Output is correct
24 Correct 145 ms 35924 KB Output is correct
25 Correct 62 ms 22300 KB Output is correct
26 Correct 65 ms 22096 KB Output is correct
27 Correct 152 ms 35968 KB Output is correct
28 Correct 151 ms 35920 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 1 ms 4444 KB Output is correct
4 Incorrect 1 ms 4444 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 4696 KB Output is correct
2 Correct 1 ms 4472 KB Output is correct
3 Correct 1 ms 4444 KB Output is correct
4 Correct 40 ms 16228 KB Output is correct
5 Correct 152 ms 36120 KB Output is correct
6 Correct 146 ms 36180 KB Output is correct
7 Correct 167 ms 36180 KB Output is correct
8 Correct 1 ms 4444 KB Output is correct
9 Correct 38 ms 16208 KB Output is correct
10 Correct 147 ms 36180 KB Output is correct
11 Correct 156 ms 36176 KB Output is correct
12 Correct 164 ms 35956 KB Output is correct
13 Correct 1 ms 4444 KB Output is correct
14 Correct 1 ms 4444 KB Output is correct
15 Correct 1 ms 4444 KB Output is correct
16 Correct 38 ms 16208 KB Output is correct
17 Correct 159 ms 36160 KB Output is correct
18 Correct 148 ms 36180 KB Output is correct
19 Correct 145 ms 36128 KB Output is correct
20 Correct 145 ms 35920 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4444 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 2 ms 4444 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 1 ms 4444 KB Output is correct
6 Correct 7 ms 9472 KB Output is correct
7 Correct 149 ms 36132 KB Output is correct
8 Correct 1 ms 4444 KB Output is correct
9 Correct 1 ms 4444 KB Output is correct
10 Correct 1 ms 4444 KB Output is correct
11 Correct 1 ms 4444 KB Output is correct
12 Correct 8 ms 7488 KB Output is correct
13 Correct 158 ms 31900 KB Output is correct
14 Correct 1 ms 4444 KB Output is correct
15 Correct 1 ms 2396 KB Output is correct
16 Correct 3 ms 4700 KB Output is correct
17 Correct 63 ms 13840 KB Output is correct
18 Correct 1 ms 4440 KB Output is correct
19 Correct 1 ms 2392 KB Output is correct
20 Correct 37 ms 16212 KB Output is correct
21 Correct 148 ms 36180 KB Output is correct
22 Correct 147 ms 36124 KB Output is correct
23 Correct 151 ms 36080 KB Output is correct
24 Correct 145 ms 35924 KB Output is correct
25 Correct 62 ms 22300 KB Output is correct
26 Correct 65 ms 22096 KB Output is correct
27 Correct 152 ms 35968 KB Output is correct
28 Correct 151 ms 35920 KB Output is correct
29 Correct 1 ms 4440 KB Output is correct
30 Correct 1 ms 4444 KB Output is correct
31 Correct 1 ms 4444 KB Output is correct
32 Incorrect 1 ms 4444 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 4444 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 2 ms 4444 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 1 ms 4444 KB Output is correct
6 Correct 7 ms 9472 KB Output is correct
7 Correct 149 ms 36132 KB Output is correct
8 Correct 1 ms 4444 KB Output is correct
9 Correct 1 ms 4444 KB Output is correct
10 Correct 1 ms 4444 KB Output is correct
11 Correct 1 ms 4444 KB Output is correct
12 Correct 8 ms 7488 KB Output is correct
13 Correct 158 ms 31900 KB Output is correct
14 Correct 1 ms 4444 KB Output is correct
15 Correct 1 ms 2396 KB Output is correct
16 Correct 3 ms 4700 KB Output is correct
17 Correct 63 ms 13840 KB Output is correct
18 Correct 1 ms 4440 KB Output is correct
19 Correct 1 ms 2392 KB Output is correct
20 Correct 37 ms 16212 KB Output is correct
21 Correct 148 ms 36180 KB Output is correct
22 Correct 147 ms 36124 KB Output is correct
23 Correct 151 ms 36080 KB Output is correct
24 Correct 145 ms 35924 KB Output is correct
25 Correct 62 ms 22300 KB Output is correct
26 Correct 65 ms 22096 KB Output is correct
27 Correct 152 ms 35968 KB Output is correct
28 Correct 151 ms 35920 KB Output is correct
29 Correct 1 ms 4440 KB Output is correct
30 Correct 1 ms 4444 KB Output is correct
31 Correct 1 ms 4444 KB Output is correct
32 Incorrect 1 ms 4444 KB Answer gives possible 1 while actual possible 0
33 Halted 0 ms 0 KB -