#include "supertrees.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
const int N = 1e3+4;
bool vis[N];
vector<int> adj[N];
vector<int> List;
void dfs(int v) {
vis[v] = true; List.pb(v);
for (int u : adj[v]) if (!vis[u]) dfs(u);
}
int construct(std::vector<std::vector<int>> p) {
int n = p.size();
vector ans(n, vector<int>(n));
for (int i=0; i<n; i++) {
if (p[i][i]!=1) return 0;
for (int j=0; j<n; j++) {
if (i!=j) assert(p[i][j]==0 || p[i][j]==2);
if (p[i][j]!=p[j][i]) return 0;
}
}
for (int i=0; i<n; i++) for (int j=0; j<n; j++) if (p[i][j]) {
adj[i].pb(j); adj[j].pb(i);
}
for (int i=0; i<n; i++) if (!vis[i]) {
dfs(i);
if (List.size()>1) List.pb(List[0]);
for (int i=0; i+1 < List.size(); i++) {
int v = List[i], u = List[i+1];
ans[v][u] = ans[u][v] = 1;
}
for (int v:List) for (int u:List) if (u!=v && p[v][u]+p[u][v]!=4) return 0;
List.clear();
}
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... |