Submission #1249532

#TimeUsernameProblemLanguageResultExecution timeMemory
1249532jerryWorld Map (IOI25_worldmap)C++20
100 / 100
21 ms2888 KiB
#include "worldmap.h" #include <assert.h> std::vector<int> adj[45]; std::vector<int> ord; int ans[95][95]; bool seen[45]; void dfs(int at) { seen[at] = true; ord.push_back(at); for (int u : adj[at]) { if (!seen[u]) { dfs(u); ord.push_back(at); } } } std::vector<std::vector<int>> create_map(int n, int m, std::vector<int> a, std::vector<int> b) { for (int i = 0; i < n; i++) adj[i].clear(); for (int i = 0; i < m; i++) { adj[a[i] - 1].push_back(b[i] - 1); adj[b[i] - 1].push_back(a[i] - 1); } ord.clear(); for (int i = 0; i < n; i++) seen[i] = false; dfs(0); for (int i = 0; i < 2 * n; i++) for (int j = 0; j < 2 * n; j++) ans[i][j] = ord.back(); for (int i = 0; i < n; i++) seen[i] = false; int diag = 0; for (int u : ord) { for (int i = 0; i < 4 * n; i++) { int r = i, c = diag - i; if (0 <= r && r < 2 * n && 0 <= c && c < 2 * n) ans[r][c] = u; } diag++; if (seen[u]) { continue; } seen[u] = true; std::vector<int> here; for (int v : adj[u]) if (seen[v]) here.push_back(v); for (int i = 0; i < 4 * n; i++) { int r = i, c = diag - i; if (0 <= r && r < 2 * n && 0 <= c && c < 2 * n) { if (here.empty()) ans[r][c] = u; else { ans[r][c] = here.back(); here.pop_back(); } } } diag++; assert(here.empty()); for (int i = 0; i < 4 * n; i++) { int r = i, c = diag - i; if (0 <= r && r < 2 * n && 0 <= c && c < 2 * n) ans[r][c] = u; } diag++; } std::vector<std::vector<int>> result; for (int i = 0; i < 2 * n; i++) { for (int j = 0; j < 2 * n; j++) ans[i][j]++; result.emplace_back(ans[i], ans[i] + 2 * n); } return result; }
#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...