#include "bits/stdc++.h"
#include "supertrees.h"
using namespace std;
vector<int> par;
int fnd(int a){
if(a == par[a]) return a;
return par[a] = fnd(par[a]);
}
void merge(int a, int b){
a = fnd(a);
b = fnd(b);
par[b] = a;
}
int construct(vector<vector<int>> p) {
int n = p.size();
par.resize(n);
for(int i = 0; i < n; i++){
par[i] = i;
}
for(int i = 0; i < n; i++){
for(int j = i+1; j < n; j++){
if(p[i][j] > 0) merge(i, j);
}
}
bool pos = 1;
for(int i = 0; i < n; i++){
for(int j = i+1; j < n; j++){
if(p[i][j] == 0 && fnd(i) == fnd(j)){
pos = 0;
}
}
}
if(!pos){
return 0;
}
vector<vector<int> > ans(n, vector<int>(n, 0));
vector<int> lst(n, -1);
for(int i = 0; i < n; i++){
int g = fnd(i);
if(lst[g] != -1){
ans[lst[g]][i] = ans[i][lst[g]] = 1;
}
lst[g] = i;
}
build(ans);
return 1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |