Submission #1230034

#TimeUsernameProblemLanguageResultExecution timeMemory
1230034coco2311Stations (IOI20_stations)C++17
0 / 100
311 ms528 KiB
#include "stations.h" #include <vector> #include <iostream> using namespace std; int root; vector<vector<int>> adj; vector<bool> vis; vector<int> lab; void dfs(int n){ vis[n]=true; for(int i: adj[n]){ if(vis[i])continue; lab[i]=lab[n]+1; dfs(i); } } vector<int> label(int N, int K, std::vector<int> u, std::vector<int> v) { adj.resize(N,{}); int occ[N]; for(int i=0;i<N;i++){ occ[i]=0; } root=0; for (int i = 0; i < N; i++) { occ[u[i]]++; if(occ[u[i]]>2 && root==0){ root=u[i]; } occ[v[i]]++; if(occ[v[i]]>2 && root==0){ root=v[i]; } adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } vis.resize(N,false); lab.resize(N); lab[root]=0; for(int i: adj[root]){ lab[i]=(i*1000)+1; dfs(i); } return lab; } int find_next_station(int s, int t, std::vector<int> c) { if (c.size()==1){ return c[0]; } if(s==root){ for(int i: c){ if(i/1000 ==t){ return i; } } } if(s/1000 == t/1000){ if(t<s){ return min(c[0],c[1]); } return max(c[0],c[1]); } else{ return min(c[0],c[1]); } 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...