Submission #1238796

#TimeUsernameProblemLanguageResultExecution timeMemory
1238796ereringStations (IOI20_stations)C++20
100 / 100
308 ms676 KiB
#include <bits/stdc++.h> #include "stations.h" using namespace std; #define pb push_back const int N=1005; vector<int> adj[N]; int tim=0,in[N],out[N],lab[N]; void dfs(int node,int par,int depth){ in[node]=tim++; if(depth%2==0)lab[node]=in[node]; depth++; for(auto i:adj[node]){ if(i!=par)dfs(i,node,depth); } out[node]=tim++; if(depth%2==0)lab[node]=out[node]; } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { for(int i=0;i<n;i++){ adj[i].clear(); lab[i]=0; in[i]=0; out[i]=0; tim=0; } for(int i=0;i<u.size();i++){ adj[u[i]].pb(v[i]); adj[v[i]].pb(u[i]); } dfs(0,-1,0); vector<int> final; set<int> comp; for(int i=0;i<n;i++)comp.insert(lab[i]); map<int,int> c; int cnt=0; for(auto i:comp)c[i]=cnt++; for(int i=0;i<n;i++){ final.pb(c[lab[i]]); } return final; } /* 1 5 100 0 1 1 2 2 3 3 4 2 1 3 2 */ int find_next_station(int s, int t, std::vector<int> c) { if(s<c[0]){ if(t>s && t<=c[0])return c[0]; for(int i=1;i<c.size()-1;i++){ if(t>c[i-1] && t<=c[i])return c[i]; } return c.back(); } for(int i=1;i<c.size()-1;i++){ if(t>=c[i] && t<c[i+1])return c[i]; } if(t>=c.back() && t<s)return c.back(); 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...