Submission #1355297

#TimeUsernameProblemLanguageResultExecution timeMemory
1355297Charizard2021Connecting Supertrees (IOI20_supertrees)C++20
0 / 100
1 ms344 KiB
#include "supertrees.h"
#include<bits/stdc++.h>
using namespace std;
int n;
vector<int> sizes;
vector<int> parent;
vector<vector<int> > adj;
int get(int a){
	if(parent[a] == a){
		return a;
	}
	int v = get(parent[a]);
	parent[a] = v;
	return v;
}
bool join(int a, int b){
	a = get(a);
	b = get(b);
	if(a == b){
		return false;
	}
	if(sizes[a] < sizes[b]){
		swap(a, b);
	}
	sizes[a] += sizes[b];
	parent[b] = a;
	return true;
}
int construct(vector<vector<int> > p){
	n = p.size();
	sizes.resize(n, 1);
	parent.resize(n);
	bool has1 = false;
	int comp = n;
	int edj = 0;
	for(int i = 0; i < n; i++){
		parent[i] = i;
		for(int j = i + 1; j < n; j++){
			if(p[i][j] == 1){
				edj++;
				if(join(i, j)){
					comp--;
				}
				has1 = true;
			}
		}
	}
	if(edj == n - comp){
		vector<vector<int> > answer(n, vector<int>(n, 0));
		for(int i = 0; i < n; i++){
			for(int j = 0; j < n; j++){
				answer[i][j] = p[i][j];
			}
		}
		build(answer);
	}
	else{
		return 0;
	}
}

Compilation message (stderr)

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:60:1: warning: control reaches end of non-void function [-Wreturn-type]
   60 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...