#include "supertrees.h"
#include <bits/stdc++.h>
#include <vector>
#define pb push_back
using namespace std;
const int maxn = 1e3 + 10;
vector < int > initg[maxn];
int initc[maxn], currc;
vector < int > path;
void dfs(int beg)
{
path.pb(beg);
initc[beg] = currc;
for (auto nb: initg[beg])
if(!initc[nb])dfs(nb);
}
int construct(std::vector<std::vector<int>> p)
{
int n = p.size();
std::vector<std::vector<int>> answer;
for (int i = 0; i < n; ++ i)
{
std::vector<int> row;
row.resize(n);
answer.push_back(row);
}
vector < pair < int, int > > initp;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; ++ j)
{
if(p[i][j])
{
initg[i].pb(j);
initg[j].pb(i);
}
else initp.pb(make_pair(i, j));
}
}
for (int i = 0; i < n; ++ i)
{
if(initc[i])continue;
path.clear();
currc ++;
dfs(i);
int lastv = -1;
for (auto v: path)
{
if(lastv == -1)
{
lastv = v;
continue;
}
answer[lastv][v] = 1;
answer[v][lastv] = 1;
}
}
for (auto &[x, y]: initp)
if(initc[x] == initc[y])return 0;
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... |