Submission #1323976

#TimeUsernameProblemLanguageResultExecution timeMemory
1323976ZeroCoolWorld Map (IOI25_worldmap)C++20
100 / 100
23 ms2944 KiB
#include "worldmap.h" #include <bits/stdc++.h> #define ar array #define all(v) v.begin(), v.end() using namespace std; const int N = 50; vector<int> g[N]; vector<int> ord; bool vis[N]; set<ar<int,2> > e; int dep[N]; void dfs(int x){ vis[x] = 1; // cout<<x<<" "; for(auto u: g[x]){ if(vis[u])continue; ord.push_back(x); dep[u] = dep[x] + 1; e.erase({min(u, x), max(u, x)}); dfs(u); } ord.push_back(x); } std::vector<std::vector<int>> create_map(int n, int m, std::vector<int> A, std::vector<int> B) { for(int i = 1;i <= n;i++)g[i].clear(), vis[i] = 0; e.clear(); ord.clear(); for(int i = 0;i < m;i++){ auto [a, b] = ar<int,2>{A[i], B[i]}; g[a].push_back(b); g[b].push_back(a); // cout<<a<<" "<<b<<endl; e.insert({min(a, b), max(a, b)}); } dfs(1); // cout<<endl; int k = 2 * n; vector<vector<int> > ans(k, vector<int>(k, -1)); vector<int> f[n + 1]; for(auto [a, b]: e){ if(dep[a] < dep[b])swap(a, b); f[a].push_back(b); } vector<ar<int,2>> D[2 * k -1]; for(int i = 0;i < k;i++){ for(int j = 0;j < k;j++)D[i + j].push_back({i, j}); } // for(auto u: ord)cout<<u<<" "; // cout<<endl; // assert(0); set<int> s; int d = 0; for(auto u: ord){ if(s.count(u)){ for(auto [a, b]: D[d])ans[a][b] = u; d++; continue; } s.insert(u); for(auto [a, b]: D[d])ans[a][b] = u; d++; for(auto [a, b]: D[d])ans[a][b] = u; // cout<<D[d].size()<<" "<<f[u].size()<<'\n'; for(int i = 0;i < f[u].size();i++){ auto [a, b] = D[d][i]; ans[a][b] = f[u][i]; } d++; for(auto [a, b]: D[d])ans[a][b] = u; d++; } for(;d < 2 * k - 1;d++){ for(auto [a, b]: D[d])ans[a][b] = 1; } 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...