# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1175151 | bangan | Race (IOI11_race) | C++20 | 970 ms | 93936 KiB |
#include "race.h"
#include <bits/stdc++.h>
using i64 = long long;
using i2 = std::array<int, 2>;
int best_path(int N, int K, int H[][2], int L[]) {
std::vector<std::vector<i2>> adj(N);
for (int i = 0; i < N - 1; i++) {
adj[H[i][0]].push_back({H[i][1], L[i]});
adj[H[i][1]].push_back({H[i][0], L[i]});
}
std::vector<int> sz(N, 1), imp(N, -1), h(N);
std::vector<i64> d(N);
auto prep = [&](auto self, int v, int f) -> void {
for (auto [u, w] : adj[v]) {
if (u != f) {
h[u] = h[v] + 1;
d[u] = d[v] + w;
self(self, u, v);
sz[v] += sz[u];
if (imp[v] == -1 || sz[imp[v]] < sz[u]) {
imp[v] = u;
}
}
}
};
prep(prep, 0, 0);
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |