Submission #926697

#TimeUsernameProblemLanguageResultExecution timeMemory
926697ByeWorldStations (IOI20_stations)C++14
0 / 100
569 ms956 KiB
#include "stations.h" #include <vector> #include <bits/stdc++.h> #define fi first #define se second #define pb push_back using namespace std; typedef pair<int,int> pii; typedef pair<pii,int> ipii; const int MAXN = 2e3+10; int n, k; vector <int> adj[MAXN]; vector <int> vec; int dep[MAXN]; void make(int id, int par, int dp){ vec.pb(id); dep[id] = dp; for(auto in : adj[id]){ if(in == par) continue; make(in, id, dp+1); } } vector<int> label(int N, int K, vector<int> u, vector<int> v) { n = N; k = K; vec.clear(); for(int i=0; i<=n; i++){ adj[i].clear(); dep[i] = -1; } for(int i=0; i<n-1; i++){ adj[u[i]].pb(v[i]); adj[v[i]].pb(u[i]); } for(int i=0; i<n; i++){ if(adj[i].size() != 1) continue; make(i, -1, 0); break; } // for(int i=0; i<n; i++){ // for(int j=0; j<n; j++){ // if(i!=j && dep[i]==dep[j]) assert(false); // } // } vector<int> labels(n); for (int i = 0; i < n; i++) { labels[i] = i; } // for(auto in : vec) cout << in << " p\n"; // for(int i=0; i<n; i++) cout << i << ' ' << dep[i] << " xx\n"; return labels; } int find_next_station(int s, int t, vector<int> c) { //if(s>=n || t>=n) assert(0); int las = -1, ans = 0; for(auto in : vec){ if(las==s){ ans = in; break; } if(in==t) break; las = in; } las = -1; for(int i=vec.size()-1; i>=0; i--){ if(las==s){ ans = vec[i]; break; } if(vec[i]==t) break; las = vec[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...