Submission #1252913

#TimeUsernameProblemLanguageResultExecution timeMemory
1252913madamadam3세계 지도 (IOI25_worldmap)C++20
72 / 100
84 ms8776 KiB
#include "worldmap.h" #include <bits/stdc++.h> using namespace std; // #define int long long int using vi = vector<int>; using vvi = vector<vi>; void dfs(int u, vector<bool> &vis, vvi &adj, vi &tour) { vis[u] = true; tour.push_back(u); for (int v : adj[u]) { if (vis[v]) continue; dfs(v, vis, adj, tour); tour.push_back(u); } } vvi create_map(int n, int m, vi a, vi b) { vvi adj(n+1, vi()); for (int i = 0; i < m; i++) adj[a[i]].push_back(b[i]), adj[b[i]].push_back(a[i]); vector<bool> vis(n+1, false); vi tour; set<int> seen; dfs(1, vis, adj,tour); vvi ans(1); vector<int> ridx(n+1); for (int i = 0; i < tour.size(); i++) { int tc = 0; for (auto &el : adj[tour[i]]) if (el > tour[i]) tc++; if (!seen.count(tour[i]) && tc > 0) { ans[0].push_back(tour[i]); ridx[tour[i]] = ans[0].size(); ans[0].push_back(tour[i]); } ans[0].push_back(tour[i]); seen.insert(tour[i]); } int K = ans[0].size(); for (int i = 1; i < K; i++) { ans.push_back(vi(K)); for (int j = 0; j < K; j++) { ans[i][j] = ans[i-1][j]; } } for (int i = 1; i <= n; i++) { int r = ridx[i]; int cc = 0; for (auto &el : adj[i]) { if (el <= i) continue; ans[cc][r] = el; cc += 2; } } 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...