Submission #1256087

#TimeUsernameProblemLanguageResultExecution timeMemory
1256087TurkhuuWorld Map (IOI25_worldmap)C++20
72 / 100
93 ms9544 KiB
#include "worldmap.h" #include <bits/stdc++.h> #define FOR(i, a, b) for (auto i = (a); i <= (b); i++) #define ROF(i, a, b) for (auto i = (a); i >= (b); i--) using namespace std; using ll = long long; int N, t; vector<bool> vis; vector<vector<int>> adj, ans; vector<int> a; void f(int bagana, int x) { FOR(i, 0, 4 * N - 1) ans[i][bagana] = x; } void dfs(int x, int p) { vis[x] = 1; f(t++, x); vector<int> back; for (int y : adj[x]) if (vis[y] && y != p) back.push_back(y); if (!back.empty()) { int j = 0; for (int y : back) ans[j++][t] = y, ans[j++][t] = x; for (; j < 4 * N; j++) ans[j][t] = x; t++; f(t++, x); } for (int y : adj[x]) { if (!vis[y]) { dfs(y, x); f(t++, x); } } } std::vector<std::vector<int>> create_map(int _N, int M, std::vector<int> A, std::vector<int> B) { adj.clear(), vis.clear(), ans.clear(); t = 0; N = _N; adj.resize(N); vis.resize(N); ans.resize(4 * N, vector<int>(4 * N)); FOR(i, 0, M - 1) { A[i]--, B[i]--; adj[A[i]].push_back(B[i]); adj[B[i]].push_back(A[i]); } dfs(0, -1); for (; t < 4 * N; t++) f(t, ans[t - 1][0]); for (auto& x : ans) for (auto& y : x) y++; 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...