Submission #1256570

#TimeUsernameProblemLanguageResultExecution timeMemory
1256570ThylOneWorld Map (IOI25_worldmap)C++20
72 / 100
74 ms9596 KiB
#include "worldmap.h" #include <bits/stdc++.h> using namespace std; using grid = vector<vector<int>>; vector<int> links[40]; vector<vector<int>> euleur_tour; bool mem[40]; int K; void uniform_line(int i){ euleur_tour.push_back({}); euleur_tour[euleur_tour.size()-1].resize(K, i +1); } void add_damage(int i, vector<int> v){ euleur_tour.push_back(vector<int>(K,i+1)); for(int j = 0 ; j < v.size() ; j++) euleur_tour[euleur_tour.size()-1][2*j] = v[j]+1; } int depth[40]; set<int> on_stack; void dfs(int node,int papa=-1){ on_stack.insert(node); uniform_line(node); mem[node] = true; vector<int> to_dam; for(int u:links[node]){ if(mem[u]){ if(on_stack.find(u)!=on_stack.end() && u!=papa){ to_dam.push_back(u); } }else{ depth[u] = depth[node] + 1; dfs(u, node); uniform_line(node); } } on_stack.erase(node); add_damage(node, to_dam); uniform_line(node); } grid create_map(int N, int M, std::vector<int> A, std::vector<int> B) { for(int i = 0 ; i < N ; i++)links[i].clear(); euleur_tour.clear(); K = 4*N-1; fill(mem, mem+40,false); fill(depth, depth+40,0); grid ans(K, std::vector<int>(K, 1)); for(int i = 0 ; i < M ; i++){ A[i]--; B[i]--; links[A[i]].push_back(B[i]); links[B[i]].push_back(A[i]); } dfs(0); cerr << N << " " << euleur_tour.size() << endl; //assert(euleur_tour.size()==2*N-2); for(int i =0 ; i < euleur_tour.size() ;i++){ ans[i] = euleur_tour[i]; } //TODO penser au plus 1 partout pour les valeurs for(int i = euleur_tour.size(); i < K ; i++){ ans[i] = ans[euleur_tour.size()-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...