제출 #1200912

#제출 시각아이디문제언어결과실행 시간메모리
1200912PlayVoltz기지국 (IOI20_stations)C++20
100 / 100
308 ms584 KiB
#include <bits/stdc++.h> using namespace std; #define pii pair<int, int> #define mp make_pair #define pb push_back #define fi first #define se second int counter; vector<int> res; vector<vector<int> > graph; void dfs(int node, int p, bool a){ if (!a)res[node]=++counter; for (auto num:graph[node])if (num!=p)dfs(num, node, !a); if (a)res[node]=++counter; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { graph.clear(); res.clear(); counter=-1; graph.resize(n); res.resize(n); for (int i=0; i<n-1; ++i){ graph[v[i]].pb(u[i]); graph[u[i]].pb(v[i]); } dfs(0, 0, 0); return res; } int find_next_station(int s, int t, vector<int> c){ sort(c.begin(), c.end()); if (c.size()==1)return c[0]; if (!s){ for (int i=c.size()-1; i>=1; --i)if (t<=c[i]&&t>c[i-1])return c[i]; return c[0]; } if (s>c.back()){ if (t<c[1]||t>s)return c[0]; for (int i=1; i<c.size()-1; ++i)if (t>=c[i]&&t<c[i+1])return c[i]; return c.back(); } else{ if (t<s||t>c[c.size()-2])return c.back(); for (int i=c.size()-2; i>=1; --i)if (t<=c[i]&&t>c[i-1])return c[i]; 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...