Submission #1132384

#TimeUsernameProblemLanguageResultExecution timeMemory
1132384StefanSebezStations (IOI20_stations)C++20
0 / 100
309 ms2888 KiB
#include<bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define ll long long #define ld long double const int N=1e5+50; vector<int>E[N]; int in[N],out[N],nc=-1; void DFS(int u,int parent=-1){ in[u]=++nc; for(auto i:E[u]){ if(i!=parent) DFS(i,u); } out[u]=nc; } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v){ for(int i=0;i<n-1;i++){ E[u[i]].pb(v[i]); E[v[i]].pb(u[i]); } int root=0; /*for(int i=0;i<n;i++){ if(E[i].size()==1) root=i; }*/ DFS(root); vector<int>lbl;for(int i=0;i<n;i++) lbl.pb(in[i]+1000*out[i]); for(int i=0;i<=n;i++) E[i].clear(),in[i]=out[i]=0,nc=-1; return lbl; } int find_next_station(int s, int t, std::vector<int> c){ /*int res=c[0]; if(s<t){ for(int i=0;i<c.size();i++){ int u=c[i]; if(u>s) res=u; } } else{ for(int i=0;i<c.size();i++){ int u=c[i]; if(u<s) res=u; } }*/ int res=c[0]; if(s%1000<=t%1000&&t%1000<=s/1000){ for(auto i:c){ if(i%1000<=t%1000&&t%1000<i/1000) res=i; } } else{ for(auto i:c){ if(i%1000<s%1000) res=i; } } return res; }
#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...