#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,l;
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]==3)return 0;
else if(p[i][j]){
par[find(i)]=par[find(j)];
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==j)continue;
//cout << i << sp << j << en;
if(par[find(i)]==par[find(j)] && !p[i][j])return 0;
else if(par[find(i)]!=par[find(j)] && p[i][j])return 0;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)chk[i][j]=0;
}
for(int i=0;i<n;i++){
m[par[i]].push_back(i);
}
for(int i=0;i<n;i++)par[i]=i;
vector<int> v;
set<vector<int>> s;
for(auto [k,u]:m){
for(int i=0;i<u.size();i++){
for(int j=0;j<u.size();j++){
if(i==j)continue;
if(p[u[i]][u[j]]==1){
par[find(u[i])]=par[find(u[j])];
}
//else if(p[u[i]][u[j]]==2 && par[find(u[i])]==par[find(u[j])])return 0;
}
}
for(int i=0;i<u.size();i++){
for(int j=0;j<u.size();j++){
if(i==j)continue;
if(p[u[i]][u[j]]==1 && par[find(u[i])]!=par[find(u[j])]){
cout << i << sp << j << en;
return 0;
}
else if(p[u[i]][u[j]]==2 && par[find(u[i])]==par[find(u[j])]){
cout << i << sp << j << en;
return 0;
}
}
}
l.clear();
for(int i=0;i<u.size();i++){
l[par[u[i]]].push_back(u[i]);
}
// for(auto [j,v]:l){
// cout << j << ':' << sp;
// for(int i:v)cout << i << sp;
// cout << en;
// }
vector<int> c;
for(auto [j,v]:l){
c.push_back(j);
for(auto i:v){
if(i!=j){
answer[j][i]=answer[i][j]=1;
}
}
}
if(c.size()==2){
if(p[c[0]][c[1]]==2 ||p[c[1]][c[0]]==2)return 0;
}
for(int i=0;i<c.size();i++){
if(i!=(i+1)%c.size())answer[c[i]][c[(i+1)%c.size()]]=answer[c[(i+1)%c.size()]][c[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... |