Submission #304999

#TimeUsernameProblemLanguageResultExecution timeMemory
304999mhy908Stations (IOI20_stations)C++14
100 / 100
1228 ms1048 KiB
#include "stations.h" #include <bits/stdc++.h> #define mp make_pair #define eb emplace_back #define F first #define S second #define all(x) x.begin(), x.end() #define svec(x) sort(all(x)) #define press(x) x.erase(unique(all(x)), x.end()); using namespace std; typedef long long LL; typedef pair<int, int> pii; typedef pair<int, LL> pil; typedef pair<LL, int> pli; typedef pair<LL, LL> pll; const int INF=1e9; const LL LLINF=1e18; int n, re; vector<int> link[1010], lab, id; void dfs(int num, int par, int d){ re++; if(d)lab[num-1]=re; for(auto i:link[num]){ if(i==par)continue; dfs(i, num, (d+1)%2); } if(!d)lab[num-1]=re; re++; } vector<int> label(int _n, int k, vector<int> u, vector<int> v){ n=_n; lab.clear(); id.clear(); lab.resize(n); re=0; for(int i=0; i<n-1; i++){ link[u[i]+1].eb(v[i]+1); link[v[i]+1].eb(u[i]+1); } dfs(1, 0, 1); for(int i=1; i<=n; i++)link[i].clear(); for(auto i:lab)id.eb(i); svec(id); press(id); for(auto &i:lab)i=lower_bound(all(id), i)-id.begin(); return lab; } int find_next_station(int s, int t, vector<int> c){ if(s>c.back())reverse(all(c)); for(auto i:c){ if(min(i, s)<=t&&t<=max(i, s))return i; } return c.back(); } /* 1 5 10 0 1 1 2 1 3 2 4 */
#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...