#include <bits/stdc++.h>
#include "closing.h"
using namespace std;
#define fi first
#define se second
typedef long long ll;
typedef long double ld;
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
ll inf = 1e18;
ll n, x, y, k;
vector<vector<pair<ll,ll>>> g;
vector<ll> dist;
void dfs(ll ve, ll d = 0) {
if (dist[ve] <= d) {
return;
}
dist[ve] = d;
for (auto [uv, le] : g[ve]) {
dfs(uv, d + le);
}
}
int max_score(int N, int X, int Y, ll K, vector<int> U, vector<int> V, vector<int> W) {
n = N;
x = X;
y = Y;
k = K;
g.resize(N);
for (int i = 0; i < n - 1; i++) {
g[V[i]].push_back({U[i], W[i]});
g[U[i]].push_back({V[i], W[i]});
}
dist.assign(n, inf);
dfs(x);
dfs(y);
sort(dist.begin(), dist.end());
int cnt = 0;
for (int i = 0; i < n; i++) {
if (dist[i] <= k) {
cnt++;
k -= dist[i];
}
}
return cnt;
}
# | 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... |
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |