# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1080127 | 2024-08-29T07:18:58 Z | UmairAhmadMirza | Stations (IOI20_stations) | C++17 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; int const N=1005; vector<int> adj[N]; int tim=-1; int in[N],out[N]; void dfs(int node,int par=-1){ tim++; in[node]=tim; for(int i:adj[node]) if(i!=par) dfs(i,node); out[node]=tim; } vector<int> label(int n, int k, vector<int> u, vector<int> v){ for (int i = 0; i < n; ++i) { adj[node].clear(); tim=-1; in[i]=out[i]=0; } for (int i = 0; i < n-1; ++i) { adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } dfs(0); vector<int> val; for (int i = 0; i < n; ++i) val.push_back((in[i]*1000)+out[i]); for(int i=0;i<n;i++) cout<<val[i]<<' '; cout<<endl; return val; } int find_next_station(int s, int t, vector<int> c){ int n=c.size(); int inn[n],outt[n]; int ti=t/1000,to=t%1000; for (int i = 0; i < n; ++i) { inn[i]=c[i]/1000; outt[i]=c[i]%1000; } for(int i=0;i<n;i++) if(inn[i]<=ti && to<=outt[i]) return c[i]; int si=s/1000,so=s%1000; for(int i=0;i<n;i++) if(inn[i]<=si && so<=outt[i]) return c[i]; while(1) cout<<"it is not working"<<endl; return 0; }