Submission #1234480

#TimeUsernameProblemLanguageResultExecution timeMemory
1234480pcp기지국 (IOI20_stations)C++20
0 / 100
303 ms564 KiB
#include <vector> #include <stack> #include <iostream> using namespace std; void dfs(vector<vector<int>> &connections, int node, int depth, int &count, vector<int> &cons){ if (cons[node]!=-1)return; ++depth; if (depth%2!=0){++count;cons[node]=count;} else cons[node]=-2; int tout = count; for (int it : connections[node]){ dfs(connections,it,depth,count,cons); } if (depth%2==0){++count;cons[node]=count;} } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { std::vector<vector<int>> connections(n); for (int i = 0; i < n-1; i++) { connections[u[i]].push_back(v[i]); connections[v[i]].push_back(u[i]); } vector<int> cons(n,-1); int count = -1; dfs(connections,0,-1,count,cons); return cons; } int find_next_station(int s, int t, std::vector<int> c) { sort(c.begin(),c.end()); if (s<c[0]){ reverse(c.begin(),c.end()); int bf = s; for (int i = 0; i < c.size()-1;++i){ if (t > bf && t<=c[i])return c[i]; bf=c[i]; } return c[c.size()-1]; }else{ int bf = s; for (int i = 0; i < c.size()-1;++i){ if (t >=c[i] && t<bf)return c[i]; bf=c[i]; } return c[c.size()-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...