Submission #836571

#TimeUsernameProblemLanguageResultExecution timeMemory
836571NeroZeinStations (IOI20_stations)C++17
16 / 100
715 ms752 KiB
#include "stations.h" #include <vector> #include <bits/stdc++.h> using namespace std; const int B = 1000; std::vector<int> label(int n, int k, std::vector<int> eu, std::vector<int> ev) { std::vector<int> labels(n, -1); vector<vector<int>> g(n); for (int i = 0; i < n - 1; ++i) { g[ev[i]].push_back(eu[i]); g[eu[i]].push_back(ev[i]); } int start = 0; for (int i = 1; i < n; ++i) { if (g[i].size() > g[start].size()) { start = i; } } function<void(int, int)> Dfs = [&](int v, int p) { for (int u : g[v]) { if (u == p) continue; labels[u] = labels[v] + B; Dfs(u, v); } }; //cout << start << '\n'; labels[start] = 0; int cnt = 1; for (int i : g[start]) { labels[i] = cnt++; Dfs(i, start); } //for (int i = 0; i < n; ++i) { //cout << labels[i] << ' '; //} //cout << '\n'; return labels; } int find_next_station(int s, int t, std::vector<int> c) { //cout << "s, t: " << s << ' ' << t << '\n'; //cout << "C: "; for (int i : c) cout << i << ' ';cout << '\n'; if (s > t) { for (int i : c) if (i < s) return i; } else { if (s == 0) { return t % B; } if ((s - t) % B == 0) { return s + B; } else { for (int i : c) if (i < s) return i; } } assert(false); }
#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...