#include "worldmap.h"
#include <bits/stdc++.h>
using namespace std;
int N, numchosen;
vector<vector<int>> adjlist, nadjlist;
vector<vector<int>> ans;
vector<int> visited;
vector<int> selected;
vector<int> null = {};
vector<vector<pair<int, vector<int>>>> mem;
void dfsc(int n, int p) {
visited[n] = 1;
for (int i : adjlist[n]) {
if (visited[i]) continue;
dfsc(i, n);
nadjlist[n].push_back(i);
}
}
pair<int, vector<int>> dfscover(int n, bool take) {
if (mem[n][take].first != -1) return mem[n][take];
vector<int> anss;
if (!take) {
for (int i : nadjlist[n]) {
auto res = dfscover(i, true);
for (int j : res.second) anss.push_back(j);
}
}
else {
anss.push_back(n);
for (int i : nadjlist[n]) {
auto res1 = dfscover(i, true);
auto res2 = dfscover(i, false);
if (res1.first > res2.first) swap(res1, res2);
for (int j : res1.second) anss.push_back(j);
}
}
return mem[n][take] = { anss.size(), anss };
}
void filll(vector<int>& filled, int k) {
vector<int> nn;
for (int i = 0; i < 2 * N - 1 + 2 * (N / 2); i++) {
if (!(i & 1) && i / 2 < filled.size()) nn.push_back(filled[i / 2] + 1);
else nn.push_back(k + 1);
}
ans.push_back(nn);
}
void dfs(int n) {
if (selected[n]) {
filll(null, n);
filll(adjlist[n], n);
}
for (int i : nadjlist[n]) {
filll(null, n);
dfs(i);
}
filll(null, n);
}
std::vector<std::vector<int>> create_map(int _N, int M, std::vector<int> A, std::vector<int> B) {
ans = vector<vector<int>>();
N = _N;
mem = vector<vector<pair<int, vector<int>>>>(N, vector<pair<int, vector<int>>> (2, pair<int, vector<int>>(-1, vector<int>())));
adjlist = vector<vector<int>>(N, vector<int>());
nadjlist = vector<vector<int>>(N, vector<int>());
selected = vector<int>(N, 0);
visited = vector<int>(N, 0);
for (int i = 0; i < M; i++) {
A[i]--, B[i]--;
adjlist[A[i]].push_back(B[i]);
adjlist[B[i]].push_back(A[i]);
}
dfsc(0, -1);
auto res1 = dfscover(0, false);
auto res2 = dfscover(0, true);
if (res1.first > res2.first) swap(res1, res2);
for (int j : res1.second) selected[j] = 1;
dfs(0);
while (ans.size() < 2 * N - 1 + 2 * (N / 2)) filll(null, 0);
return ans;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |