Submission #1300912

#TimeUsernameProblemLanguageResultExecution timeMemory
1300912thelegendary08Stations (IOI20_stations)C++17
100 / 100
414 ms624 KiB
#include "stations.h" #include<bits/stdc++.h> #define pb push_back #define mp make_pair #define vi vector<int> #define f0r(i,n) for(int i = 0; i<n; i++) #define FOR(i, k, n) for(int i = k; i<n; i++) #define dout(x) cout<<x<<' '<<#x<<'\n'; #define vout(x) for(auto u : x)cout<<u<<' '; cout<<'\n'; #define vb vector<bool> using namespace std; const int mxn = 1005; vector<vi>adj(mxn); int timer = 0; vi tin(mxn), tout(mxn),dep(mxn); void dfs(int node, int from){ tin[node] = timer++; for(auto u : adj[node])if(u != from)dep[u]=dep[node]+1,dfs(u,node); tout[node] = timer++; } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { f0r(i,n){ adj[i].clear(),tin[i]=0,tout[i]=0,dep[i]=0; } timer = 0; vi deg(n); f0r(i,n-1){ adj[u[i]].pb(v[i]); adj[v[i]].pb(u[i]); } dfs(0,-1); map<int,int>cmp; vi w; std::vector<int> labels(n); f0r(v,n)if(dep[v]%2==0)w.pb(tin[v]); else w.pb(tout[v]); sort(w.begin(),w.end()); f0r(i,n)cmp[w[i]]=i; f0r(v,n)if(dep[v]%2==0)labels[v]=cmp[tin[v]];else labels[v]=cmp[tout[v]]; return labels; } int find_next_station(int s, int t, std::vector<int> c) { int ist = 0; if(c[0] > s)ist = 1; sort(c.begin(),c.end()); if(ist){ f0r(i,c.size()-1){ if(t > s && t <= c[i])return c[i]; } return c.back(); } else{ reverse(c.begin(),c.end()); f0r(i,c.size()-1){ if(t < s && t >= c[i])return c[i]; } return c.back(); } }
#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...