Submission #778132

#TimeUsernameProblemLanguageResultExecution timeMemory
778132NeroZeinHighway Tolls (IOI18_highway)C++17
0 / 100
96 ms15340 KiB
#include "highway.h" #include "bits/stdc++.h" using namespace std; int n, m; vector<int> pe; vector<int> dep; vector<int> in_dep; vector<vector<pair<int,int>>> g; void Dfs (int v, int p) { in_dep[dep[v]] = v; for (auto [u, i] : g[v]) { if (u == p) { continue; } pe[u] = i; dep[u] = dep[v] + 1; Dfs(u, v); } } void find_pair(int N, std::vector<int> U, std::vector<int> V, int A, int B) { n = N; g.resize(n); pe.resize(n); dep.resize(n); in_dep.resize(n); m = (int) U.size(); for (int i = 0; i < m; ++i) { g[U[i]].push_back({V[i], i}); g[V[i]].push_back({U[i], i}); } Dfs(0, 0); vector<int> w(m, 0); int dis = ask(w); int depT = dis / A; assert(depT != 0); int l = -1, r = m - 1; while (l < r) { int mid = (l + r + 1) >> 1; vector<int> w(m); for (int i = 0; i <= mid; ++i) { w[i] = true; } if (ask(w) > dis) { r = mid - 1; } else { l = mid; } } answer(l + 1, in_dep[l + 1 + depT]);//S, 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...
#Verdict Execution timeMemoryGrader output
Fetching results...