#include "supertrees.h"
#include <bits/stdc++.h>
using namespace std;
#define en '\n'
#define sp ' '
const int N=1000;
int par[N],chk[N][N],vis[N],branch[N];
map<int,vector<int>> m;
int find(int a){
if(a!=par[a])return par[a]=find(par[a]);
return par[a];
}
int construct(vector<vector<int>> p) {
int n = p.size();
vector<vector<int>> answer;
for (int i = 0; i < n; i++) {
vector<int> row;
row.resize(n);
answer.push_back(row);
}
for(int i=0;i<N;i++)par[i]=i;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(p[i][j] && (chk[i][j]==0 || chk[i][j]==1)){
chk[i][j]=1;
par[find(i)]=par[find(j)];
}
else if(!p[i][j] && (chk[i][j]==0 || chk[i][j]==-1)){
chk[i][j]=-1;
}
else return 0;
}
}
for(int i=0;i<n;i++){
m[par[i]].push_back(i);
}
//cout << m.size() << "eo" << en;
for(auto [k,v]:m){
for(int i=0;i<v.size();i++){
//cout << v[i] << sp;
answer[v[i]][v[(i+1)%v.size()]]=1;
answer[v[(i+1)%v.size()]][v[i]]=1;
}
//cout << en;
}
// for(int i=0;i<n-1;i++)answer[i][i+1]=answer[i+1][i]=1;
build(answer);
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... |