Submission #1080167

#TimeUsernameProblemLanguageResultExecution timeMemory
1080167Faisal_SaqibStations (IOI20_stations)C++17
31.04 / 100
645 ms1452 KiB
#include "stations.h" #include <vector> #include <bits/stdc++.h> using namespace std; const int N=1e3+100; const int M=2e3; vector<int> ma[N]; int tin[N],tout[N],timer=-1; void dfs(int v, int p) { tin[v] = ++timer; // n for (auto u:ma[v]) { if (u != p) dfs(u, v); } tout[v] = ++timer; // n } bool is_ancestor(int u, int v) { int tn=u/M; int tot=u%M; int tn1=v/M; int tot1=v%M; return tn <= tn1 && tot >= tot1; } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { timer=-1; for(int i=0;i<(n);i++)ma[i].clear(); vector<int> labels(n,0); for(int i=0;i<(n-1);i++) { ma[u[i]].push_back(v[i]); ma[v[i]].push_back(u[i]); } dfs(0,-1); for(int i=0;i<n;i++) labels[i]=(tin[i]*M)+tout[i]; return labels; } int find_next_station(int s, int t, std::vector<int> c) { if(is_ancestor(s,t)) { for(auto k:c) { if(is_ancestor(s,k) and is_ancestor(k,t)){ return k; } } } for(auto k:c) if(is_ancestor(k,s)) return k; return -1; }
#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...