#include <bits/stdc++.h>
using namespace std;
#define lf "\n"
#define ff endl
#define _ << ' ' <<
#define all(x) begin(x),end(x)
#define rall(x) rbegin(x),rend(x)
#define infos(str) do { fprintf(stderr, str"\n"); } while(0)
#define infor(str, ...) do { fprintf(stderr, str, __VA_ARGS__); } while(0)
#define infof(str, ...) do { fprintf(stderr, str"\n", __VA_ARGS__); } while(0)
#ifndef DEBUG
#undef infos
#undef infor
#undef infof
#define infos(str)
#define infor(str, ...)
#define infof(str, ...)
#endif
using ll = long long;
constexpr int LOG = 20;
constexpr int MOD = 1e9+7;
constexpr int MAXN = 1e5+7;
std::vector<std::vector<int>> create_map(int N, int M,
std::vector<int> A, std::vector<int> B) {
if(N == 1) return {{1}};
vector<set<int>> adj(N + 1);
for(int i = 0; i < M; ++i) {
adj[A[i]].insert(B[i]);
adj[B[i]].insert(A[i]);
}
vector<bool> vis(N + 1);
vector<int> tour;
auto dfs = [&](int v, auto &&dfs) -> void {
tour.push_back(v);
vis[v] = 1;
for(int i = 0; i < adj[v].size(); ++i) {
int u = -1;
for(auto j: adj[v]) {
if(vis[j]) continue;
if(u == -1 || adj[u].size() < adj[j].size())
u = j;
}
if(u == -1) break;
dfs(u, dfs);
tour.push_back(v);
}
};
dfs(max_element(all(adj), [&](set<int> &a, set<int> &b) -> bool {
return a.size() < b.size();
}) - adj.begin(), dfs);
tour.resize(2 * N, 1);
fill(all(vis), 0);
vector<vector<int>> ans(3 * N, vector<int>(3 * N));
int sz = 2 * N;
int skip = 0;
int done = 0;
int r = 0;
for(int i = 0; i < 2 * N; ++i) {
infof("%d: r = %d | sz = %d", i, r, sz);
if(done + skip == N && r >= sz) break;
int v = tour[i];
if(done > 0) {
for(int c = done&1; c < 3 * N; c += 2)
ans[r][c] = v;
r++;
}
fill(all(ans[r]), v);
if(vis[v]) continue;
vis[v] = 1;
int c = done&1;
for(auto u: adj[v]) {
ans[r][c] = u;
adj[u].erase(v);
if(adj[u].empty()) {
vis[u] = 1;
skip++;
}
c += 2;
}
r++;
sz = max(sz, c - 1);
done++;
fill(all(ans[r]), v);
}
sz = max(sz, r);
ans.resize(sz);
for(auto &v: ans)
v.resize(sz);
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... |