#include <bits/stdc++.h>
#include "supertrees.h"
using namespace std;
typedef long long ll;
#define fi first
#define se second
#define pb push_back
#define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define MOD 1000000007
int construct(vector<vector<int>> p) {
int n = p.size();
vector<vector<int>> answer(n,vector<int>(n));
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if(p[i][j]==3) return 0;
if(p[i][j]!=p[j][i]) return 0;
}
}
vector<int> s(n,0);
for(int i=0; i<n; i++){
if(s[i]) continue;
vector<int> cur;
for(int j=0; j<n; j++){
if(p[i][j]>0){
if(s[j]) return 0;
s[j]=1;
cur.pb(j);
}
}
for(auto f1 : cur){
int c=0;
for(int f2=0; f2<n; f2++){
if(p[f1][f2]>0) c++;
}
if(c!=cur.size()) return 0;
}
int curn=cur.size();
vector<int> curs(curn,0);
vector<int> b;
for(auto v : cur){
if(curs[v]) continue;
vector<int> cur2;
for(auto j : cur){
if(p[v][j]==1){
if(curs[j]) return 0;
curs[j]=1;
cur2.pb(j);
}
}
for(auto f1 : cur2){
int c=0;
for(auto f2 : cur){
if(p[f1][f2]==1) c++;
}
if(c!=cur2.size()) return 0;
}
b.pb(v);
for(int j=0; j<cur2.size()-1; j++){
answer[cur2[j]][cur2[j+1]]=answer[cur2[j+1]][cur2[j]]=1;
}
}
if(b.size()==1) continue;
if(b.size()==2) return 0;
b.pb(b[0]);
for(int j=0; j<b.size()-1; j++){
answer[b[j]][b[j+1]]=answer[b[j+1]][b[j]]=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... |