Submission #804612

#TimeUsernameProblemLanguageResultExecution timeMemory
804612LittleCubeStations (IOI20_stations)C++17
100 / 100
771 ms808 KiB
#include "stations.h" #include <vector> #include <bits/stdc++.h> using namespace std; int t, vis[1000]; vector<int> E[1000], labels; // type 0: first, 1: last void dfs(int u, int type) { vis[u] = 1; if (type == 0) labels[u] = t++; for (auto v : E[u]) if (!vis[v]) dfs(v, type ^ 1); if (type == 1) labels[u] = t++; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { t = 0; for (int i = 0; i < n; i++) E[i].clear(), vis[i] = 0; for (int i = 0; i < n - 1; i++) E[u[i]].emplace_back(v[i]), E[v[i]].emplace_back(u[i]); labels.clear(); labels.resize(n); dfs(0, 0); return labels; } int find_next_station(int s, int t, vector<int> c) { int root = -1; if (s < c[0]) { if (s != 0) { root = c.back(); c.pop_back(); } int pre = s; for (int a : c) { if (pre <= t && t <= a) return a; pre = a + 1; } } else { reverse(c.begin(), c.end()); if (s != 0) { root = c.back(); c.pop_back(); } int last = s; for (int a : c) { if (a <= t && t <= last) return a; last = a - 1; } } return root; }
#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...