#include "worldmap.h"
#include "bits/stdc++.h"
using namespace std;
void dfs(int cur, int par, vector<vector<int>>& adj, vector<int>& ord){
ord.push_back(cur);
for (auto &e: adj[cur]) if (e != par) {
dfs(e, cur, adj, ord);
ord.push_back(cur);
}
}
void dfs2(int cur, vector<vector<int>>& adj, vector<int>& vis, vector<vector<int>>& tree){
vis[cur] = 1;
for (auto &e: adj[cur]) if (!vis[e]) {
tree[cur].push_back(e);
tree[e].push_back(cur);
dfs2(e, adj, vis, tree);
}
}
vector<vector<int>> create_map(int N, int M, vector<int> A, vector<int> B) {
if (M == 0) return {{1}};
vector<vector<int>> adjM(N+1, vector<int>()), adj(N+1, vector<int>());
int start;
for (int i = 0; i < M; i++){
adjM[A[i]].push_back(B[i]);
adjM[B[i]].push_back(A[i]);
start = A[i];
}
vector<int> vis(N+1, 0);
dfs2(start, adjM, vis, adj);
vector<int> ord;
dfs(start, -1, adj, ord);
int K = ord.size();
vector<vector<int>> C(2*K, vector<int>(2*K));
for (int i = 0; i < K; i++){
for (int j = 0; j < 2*K; j++) C[2*i][j] = ord[i], C[2*i+1][j] = ord[i];
int d = adjM[ord[i]].size();
for (int k = 0; k < d; k++){
C[2*i][k*2 + i%2] = adjM[ord[i]][k];
if (2*i > 0) C[2*i-1][k*2 + i%2] = ord[i];
}
}
return C;
}
# | 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... |