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