#include <bits/stdc++.h>
using namespace std;
int best_path(int n, int k, int h[][2], int l[]) {
int z = n;
vector<vector<pair<int, int>>> a(n);
for (int i = 0; i + 1 < n; ++i) a[h[i][0]].emplace_back(h[i][1], l[i]), a[h[i][1]].emplace_back(h[i][0], l[i]);
vector<int> p(n), w(n);
function<void(int)> dfs = [&] (int i) {
for (auto [j, z] : a[i]) {
if (p[i] != j) {
p[j] = i, w[j] = z;
dfs(j);
}
}
};
vector<vector<int>> dp(n, vector<int>(k, -1));
dfs(0);
for (int i = 0; i < n; ++i) {
int x = i, y = 0, f = 0;
while (y < k) {
if (dp[x][y] == -1) dp[x][y] = f;
else dp[x][y] = min(dp[x][y], f);
if (dp[x][k - y] != -1) z = min(z, dp[x][k - y] + f);
if (!x) break;
y += w[x];
x = p[x];
f++;
}
}
if (z == n) z = -1;
return z;
}
# | 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... |