Submission #1253768

#TimeUsernameProblemLanguageResultExecution timeMemory
1253768nicolo_010세계 지도 (IOI25_worldmap)C++20
58 / 100
195 ms20260 KiB
#include "worldmap.h" #include <bits/stdc++.h> using namespace std; template <typename T> using v = vector<T>; using pii = pair<int, int>; #define rep(i, k, n) for (int i = k; i < n; i++) v<int> euler; v<bool> vis; v<v<int>> adj; void dfs(int n) { //cout << "DFS: " << n << endl; vis[n] = true; euler.push_back(n); euler.push_back(n); euler.push_back(n); for (auto x : adj[n]) { if (!vis[x]) { dfs(x); euler.push_back(n); euler.push_back(n); euler.push_back(n); } } } v<v<int>> ans; void full(int i, int n) { rep(j, 0, (int)ans[i].size()) { ans[i][j] = n; } } std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A, std::vector<int> B) { //cout << euler.size() << endl; for (auto x : euler) cout << x << " "; cout << endl; if (M == 0) { return {{1}}; } adj.resize(N); vis.assign(N, false); rep(i, 0, M) { int a = A[i]; int b = B[i]; a--; b--; adj[a].push_back(b); adj[b].push_back(a); } dfs(0); int n = euler.size(); cerr << n << endl; ans.assign(n, v<int>(n, 0)); for (int i =0; i < n; i += 3) { full(i, euler[i]+1); full(i+1, euler[i]+1); full(i+2, euler[i]+1); int cnt = 0; int a = euler[i]; for (int j = 0; j < n-1; j += 2) { cnt %= adj[a].size(); ans[i+1][j] = adj[a][cnt]+1; ans[i+1][j+1] = a+1; cnt++; } } vis.clear(); adj.clear(); euler.clear(); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...