Submission #1249922

#TimeUsernameProblemLanguageResultExecution timeMemory
1249922ZicrusWorld Map (IOI25_worldmap)C++20
72 / 100
42 ms5448 KiB
#include <bits/stdc++.h> #include "worldmap.h" using namespace std; typedef long long ll; typedef pair<ll, ll> pll; #define all(v) v.begin(), v.end() constexpr ll inf = 1ll << 62ll; mt19937 mt(time(0)); ll _ = 0; void fix_answer(vector<vector<int>> &res) { ll k = res.size(); for (ll i = 0; i < k; i++) { for (ll j = 0; j < k; j++) { res[i][j]++; } } } vector<vector<int>> create_map(int N, int M, vector<int> u, vector<int> v) { ll n = N, m = M; if (n == 1) return {{1}}; vector<set<ll>> adj(n); for (ll i = 0; i < m; i++) { adj[u[i]-1].insert(v[i]-1); adj[v[i]-1].insert(u[i]-1); } vector<ll> rows; vector<ll> node_row(n); ll mx_used = 0; auto dfs = [&](const auto &self, ll cur) -> bool { ll child_cnt = 0; for (auto &e : adj[cur]) { child_cnt += !node_row[e]; } if (!child_cnt) return false; mx_used = node_row[cur] = rows.size() + 1; rows.push_back(cur); rows.push_back(cur); rows.push_back(cur); for (auto &e : adj[cur]) { if (node_row[e]) continue; if (self(self, e)) { rows.push_back(cur); } } return true; }; dfs(dfs, 0); rows.erase(rows.begin()); while (rows.size() > mx_used) rows.pop_back(); ll k = max({(ll)rows.size(), 2 * n - 3, 2ll}); while (rows.size() < k) rows.push_back(rows.back()); vector<vector<int>> res(k); for (ll i = 0; i < k; i++) { res[i] = vector<int>(k, rows[i]); } for (ll i = 0; i < n; i++) { if (!node_row[i]) continue; ll col = 0; for (auto &e : adj[i]) { res[node_row[i]-1][col] = e; col += 2; } } fix_answer(res); return res; } #ifdef TEST #include "grader.cpp" #endif
#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...