제출 #1269288

#제출 시각아이디문제언어결과실행 시간메모리
1269288BlockOG기지국 (IOI20_stations)C++20
100 / 100
309 ms576 KiB
#include <bits/stdc++.h> // mrrrow meeow :3 // go play vivid/stasis now! https://vividstasis.gay #define fo(i, a, b) for (auto i = (a); i < (b); i++) #define of(i, a, b) for (auto i = (b); i-- > (a);) #define f first #define s second #define pb push_back #define pob pop_back #define lb lower_bound #define ub upper_bound #define be(a) a.begin(), a.end() using namespace std; int ____init = [] { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); return 0; }(); vector<int> adj[1000]; vector<int> labels; int cnt; void dfs_end(int i, int p); void dfs_start(int i, int p = -1) { labels[i] = cnt++; for (int j : adj[i]) { if (j == p) continue; dfs_end(j, i); } } void dfs_end(int i, int p = -1) { for (int j : adj[i]) { if (j == p) continue; dfs_start(j, i); } labels[i] = cnt++; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { fo(i, 0, n) adj[i].clear(); labels.resize(n); cnt = 0; fo(i, 0, n - 1) adj[u[i]].pb(v[i]), adj[v[i]].pb(u[i]); dfs_start(0); return labels; } int find_next_station(int s, int t, vector<int> c) { if (s < c[0]) { if (t < s || t > c.back()) return c.back(); return *lb(be(c), t); } else { if (t > s || t < c.front()) return c.front(); return *--ub(be(c), t); } }
#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...