Submission #308633

#TimeUsernameProblemLanguageResultExecution timeMemory
308633xt0r3Stations (IOI20_stations)C++14
0 / 100
936 ms760 KiB
#include<bits/stdc++.h> #include "stations.h" using namespace std; constexpr int N = 2005; int timer; vector<int> l, d; vector<bool> visited; vector<vector<int> > edges; void dfs(int id){ visited[id] = 1; d[id] = timer++; for(int v : edges[id]){ if(!visited[v]) dfs(v); } l[id] = timer++; } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v){ edges.resize(n, vector<int>()); visited.resize(n, 0); l.resize(n); d.resize(n); vector<int> ll(n); for(int i = 0; i < n; i++){ edges[u[i]].push_back(v[i]); edges[v[i]].push_back(u[i]); } dfs(0); for(int i = 0; i < n; i++){ ll[i] = N * d[i] + l[i]; } edges.clear(); visited.clear(); l.clear(); d.clear(); timer = 0; return ll; } int find_next_station(int s, int t, std::vector<int> c){ int si = s / N, sl = s % N, ti = t / N, tl = t % N, dex = -1; for(int x : c){ int ci = x / N, cl = x % N; if(ci <= si && sl <= cl) dex = x; } for(int x : c){ int ci = x / N, cl = x % N; if(x != dex && ci <= ti && tl <= cl) return x; } return dex; }
#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...