제출 #404536

#제출 시각아이디문제언어결과실행 시간메모리
404536Drew_기지국 (IOI20_stations)C++17
100 / 100
1121 ms812 KiB
#include "stations.h" #include <vector> #include <bits/stdc++.h> using namespace std; #define pb push_back std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { vector<int> labels(n, -1); vector<vector<int>> adj(n); for (int i = 0; i < n-1; ++i) { adj[u[i]].pb(v[i]); adj[v[i]].pb(u[i]); } int ctr = 0; function<void(int, int, int)> dfs = [&](int node, int par, int h) { if (h & 1) labels[node] = ctr++; //in for (int to : adj[node]) if (to != par) dfs(to, node, h+1); if (~h & 1) labels[node] = ctr++; //out }; dfs(0, -1, 1); return labels; } int find_next_station(int s, int t, std::vector<int> c) { sort(c.begin(), c.end()); if (c.back() < s) //s is out { c.pb(s); for (int i = (int)c.size() - 2; i >= 1; --i) { if (c[i] <= t && t < c[i+1]) return c[i]; } return c[0]; } else // s in in { c.pb(s); sort(c.begin(), c.end()); for (int i = 0; i+1 < (int)c.size(); ++i) { if (c[i] < t && t <= c[i+1]) return c[i+1]; } return c.back(); } 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...