Submission #430441

#TimeUsernameProblemLanguageResultExecution timeMemory
430441DanerZeinStations (IOI20_stations)C++14
27.55 / 100
1470 ms736 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; typedef vector<int> vi; const int MAX_N=1010; vector<vi> G; int in[MAX_N],out[MAX_N]; int it; void dfs(int u,int p){ in[u]=out[u]=it; it++; for(auto &v:G[u]){ if(v!=p){ dfs(v,u); out[u]=max(out[v],out[u]); } } } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { G.clear(); G.resize(n+1); memset(in,0,sizeof in); memset(out,0,sizeof out); it=0; for(int i=0;i<n-1;i++){ G[u[i]].push_back(v[i]); G[v[i]].push_back(u[i]); } dfs(0,-1); vector<int> lab; for(int i=0;i<n;i++){ lab.push_back(out[i]*10000+in[i]); } return lab; } int find_next_station(int s, int t, std::vector<int> c) { int pa=-1,hj=-1; int lt,rt; lt=t%10000; rt=t/10000; int ls,rs; ls=s%10000; rs=s/10000; for(auto &v:c){ int l,r; l=v%10000; r=v/10000; if(l<=ls && rs<=r){ pa=v; continue; } if(l<=lt && rt<=r) hj=v; } //cout<<s<<" "<<t<<" "<<hj<<" "<<pa<<endl; if(hj==-1) return pa; return hj; }
#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...