#include "worldmap.h"
#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> euler_tour;
vector<int> spantree[45], adj[45];
bool vis[45], used[45];
void dfs(int u) {
vis[u] = 1;
for (int v : adj[u]) {
if (!vis[v]) {
spantree[u].push_back(v);
spantree[v].push_back(u);
dfs(v);
}
}
}
void dfs_euler(int u) {
vis[u] = 1;
euler_tour.push_back(u);
for (int v : adj[u]) {
if (!vis[v]) {
dfs_euler(v);
euler_tour.push_back(u);
}
}
}
vector<vector<int>> create_map(int N, int M, vector<int> A, vector<int> B) {
euler_tour.clear();
for (int i = 0; i < 45; ++i) adj[i].clear();
for (int i = 0; i < 45; ++i) spantree[i].clear();
memset(vis, 0, sizeof vis);
n = N; m = M;
for (int i = 0; i < m; ++i) {
int u = A[i], v = B[i];
adj[u].push_back(v);
adj[v].push_back(u);
}
dfs(1);
memset(vis, 0, sizeof vis);
// for (int i = 1; i <= N; ++i) {
// cout << i << ": ";
// for (int j : spantree[i]) cout << j << " ";
// cout << '\n';
// }
dfs_euler(1);
// for (int v : euler_tour) cout << v << " ";
// cout << '\n';
vector<vector<int>> res(4*n, vector<int>(4*n, 0));
memset(used, 0, sizeof used);
int matsz = 4 * n, toursz = 2 * n - 1;
int currow = 0;
for (int i = 0; i < toursz; ++i) {
for (int j = 0; j < matsz; ++j) res[currow][j] = euler_tour[i];
++currow;
if (!used[euler_tour[i]]){
// cout << "Need added at index: " << i << " with: ";
for (int j = 0; j < matsz; ++j) res[currow + 1][j] = euler_tour[i];
for (int j = 0; j < matsz; ++j) res[currow][j] = euler_tour[i];
int curcol = 0;
for (int v : adj[euler_tour[i]]) {
res[currow][curcol] = v;
res[currow][curcol + 1] = euler_tour[i];
// cout << v << " ";
curcol += 2;
}
// cout << '\n';
currow += 2;
}
used[euler_tour[i]] = 1;
}
for (int i = 0; i < 4 * n; ++i) {
for (int j = 0; j < 4 * n; ++j) {
if (res[i][j] == 0) res[i][j] = 1;
}
}
// for (int i = 0; i < 4 * n; ++i) {
// for (int j = 0; j < 4 * n; ++j) {
// cout << res[i][j] << " ";
// }
// cout << '\n';
// }
return res;
}
// int main() {
// vector<vector<int>> res = create_map(4, 4, {1, 1, 2, 3}, {2, 3, 4, 4});
// for (int i = 0; i < 4 * n ; ++i) {
// for (int j = 0; j < 4 * n; ++j) {
// cout << res[i][j] << " ";
// }
// cout << '\n';
// }
// }
# | 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... |