Submission #311946

#TimeUsernameProblemLanguageResultExecution timeMemory
311946htc001Stations (IOI20_stations)C++14
0 / 100
892 ms1384 KiB
#include<bits/stdc++.h> #include "stations.h" using namespace std; const int N=1005; int tme,m; vector<int> lab; vector<int> nei[N]; map<int,int> mp; void dfs(int x,int p,int lv){ ++tme; if(lv){ lab[x-1]=tme; mp[tme]; } for(int i=0;i<int(nei[x].size());i++){ int to=nei[x][i]; if(to!=p) dfs(to,x,lv^1); } ++tme; if(!lv){ lab[x-1]=tme; mp[tme]; } } vector<int> label(int n,int k,vector<int> u,vector<int> v){ mp.clear(); lab.clear(); lab.resize(n); tme=0;m=0; for(int i=1;i<=n;i++) nei[i].clear(); for(int i=0;i<n-1;i++){ u[i]++;v[i]++; nei[u[i]].push_back(v[i]); nei[v[i]].push_back(u[i]); } dfs(1,-1,0); for(map<int,int>::iterator it=mp.begin();it!=mp.end();it++) it->second=++m; for(int i=0;i<n;i++) lab[i]=mp[lab[i]]; return lab; } int find_next_station(int s,int t,vector<int> c){ sort(c.begin(),c.end()); if(s<c[0]){ if(t>s) return *lower_bound(c.begin(),c.end(),s); else return c[int(c.size())-1]; }else{ if(t<s) return *(lower_bound(c.begin(),c.end(),s+1)-1); else return c[0]; } }
#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...