Submission #1251298

#TimeUsernameProblemLanguageResultExecution timeMemory
1251298MojoLakeWorld Map (IOI25_worldmap)C++20
72 / 100
72 ms9544 KiB
#include "worldmap.h" #include <bits/stdc++.h> #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() using namespace std; std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A, std::vector<int> B) { vector<vector<pair<int, int>>> g(N + 1); for (int i = 0; i < M; ++i) { g[A[i]].push_back({B[i], i}); g[B[i]].push_back({A[i], i}); } vector<int> col(N + 1); vector<int> order; vector<int> handled(M); vector<vector<int>> ans(4 * N, vector<int> (4 * N)); int ind = 0; auto put = [&](int x) { fill(all(ans[ind]), x); ind++; }; function<void(int, int)> dfs = [&](int u, int p) { col[u] = 1; put(u); vector<int> to_insert; for (auto [v, i] : g[u]) { if (v == p) continue; if (col[v]) { if (handled[i]) continue; // this adjacency is already accounted for to_insert.push_back(v); handled[i] = 1; continue; } else { dfs(v, u); } handled[i] = 1; put(u); } if (!to_insert.empty()) { fill(all(ans[ind]), u); for (int i = 0; i < sz(to_insert); ++i) { ans[ind][2 * i] = to_insert[i]; } ind++; put(u); } }; dfs(1, 0); while (ind < sz(ans)) put(1); // cerr << "order:\n"; // for (int x : order) { // cerr << x << " "; // } // cerr << "\n"; // int L = sz(order); // vector<vector<int>> ans(L, vector<int>(L)); // // for (int i = 0; i < L; ++i) { // fill(all(ans[i]), order[i]); // } 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...