제출 #416053

#제출 시각아이디문제언어결과실행 시간메모리
416053SuhaibSawalha1Stations (IOI20_stations)C++17
76 / 100
1224 ms808 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; vector<vector<int>> adj; vector<int> lab, in, out; int dfst; void dfs (int u = 0, int p = -1, int d = 0) { in[u] = dfst++; for (int v : adj[u]) { if (v ^ p) { dfs(v, u, d ^ 1); } } out[u] = dfst++; lab[u] = d ? in[u] : out[u]; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { adj.assign(n, {}); lab.resize(n); in.resize(n); out.resize(n); dfst = 0; for (int i = 0; i < n - 1; ++i) { adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } dfs(); return lab; } int find_next_station(int s, int t, vector<int> c) { if (c.size() == 1) { return c[0]; } if (s < c[0]) { if (t < s || t > c.back()) { return c.back(); } return *lower_bound(c.begin(), c.end(), t); } else { if (t > s || t < c[1]) { return c[0]; } return *(upper_bound(c.begin(), c.end(), t) - 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...