Submission #1253771

#TimeUsernameProblemLanguageResultExecution timeMemory
1253771nicolo_010World Map (IOI25_worldmap)C++20
72 / 100
93 ms9544 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); for (auto x : adj[n]) { if (!vis[x]) { dfs(x); 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() + 2*N; cerr << n << endl; ans.assign(n, v<int>(n, 0)); map<int, int> mp; int cnt = 0; rep(i, 0, n) { full(i, euler[cnt]+1); if (!mp.count(euler[cnt])) { full(i+1, euler[cnt]+1); full(i+2, euler[cnt]+1); int vec = 0; int a = euler[cnt]; for (int j = 0; j < n-1; j+=2) { vec %= adj[a].size(); ans[i+1][j] = adj[a][vec]+1; ans[i+1][j+1] = a+1; vec++; } mp[a] = 1; i += 2; } 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...