#include <bits/stdc++.h>
#include "supertrees.h"
using namespace std;
vector<int> cur;
map<int, int> m;
void dfs(int u, vector<vector<int>> &g, vector<bool> &vis) {
cur.push_back(m[u]);
vis[m[u]] = 1;
for (auto v : g[m[u]]) {
if (!vis[m[v]]) {
dfs(m[v], g, vis);
}
}
}
// void dfs(int r, int u, vector<vector<int>> &g, vector<vector<int>> &cnt) {
// for (auto v : g[u]) {
// }
// }
int construct(vector<vector<int>> p) {
int n = p.size();
vector<vector<int>> twos(n), ones(n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (p[i][j] == 2) {
twos[i].push_back(j);
} else if (p[i][j] == 1) {
ones[i].push_back(j);
} else {
return 0;
}
}
}
for (int i = 0; i < n; i++) {
m[i] = i;
}
vector<bool> vis1(n), vis2(n);
vector<vector<int>> a, b;
for (int i = 0; i < n; i++) {
if (!vis1[i]) {
cur.clear();
dfs(i, ones, vis1);
a.push_back(cur);
}
}
vector<vector<int>> ans(n, vector<int>(n));
for (auto k : a) {
for (int i = 1; i < k.size(); i++) {
m[k[i]] = k[0];
ans[k[i]][k[i - 1]] = 1;
ans[k[i - 1]][k[i]] = 1;
}
}
for (int i = 0; i < n; i++) {
if (!vis2[m[i]]) {
cur.clear();
dfs(m[i], twos, vis2);
b.push_back(cur);
}
}
for (auto k : b) {
if (k.size() == 1) {
continue;
}
if (k.size() == 2) {
return 0;
}
for (int i = 1; i < k.size(); i++) {
int u = m[k[i]], v = m[k[i - 1]];
ans[u][v] = ans[v][u] = 1;
}
int u = m[k.back()], v = m[k[0]];
ans[u][v] = ans[v][u] = 1;
}
for (auto k : a) {
for (auto x : k) {
for (auto y : k) {
if (p[x][y] == 0) {
return 0;
}
}
}
}
for (auto k : b) {
for (auto x : k) {
for (auto y : k) {
if (p[x][y] == 0) {
return 0;
}
}
}
}
// vector<vector<int>> g(n);
// for (int i = 0; i < n; i++) {
// for (int j = 0; j < n; j++) {
// if (ans[i][j] == 1) {
// g[i].push_back(j);
// }
// }
// }
// vector<vector<int>> cnt(n, vector<int>(n));
// if (cnt != p) {
// return 0;
// } else {
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... |