#include "closing.h"
#include <bits/stdc++.h>
#include <vector>
using ll = long long;
using namespace std;
int max_score(int n, int x, int y, long long k,
std::vector<int> U, std::vector<int> V, std::vector<int> W)
{
vector<ll> dst;
vector<vector<array<ll, 2>>> adj(n);
for(int i = 0; i<n-1; i++){
adj[U[i]].push_back({V[i], W[i]});
adj[V[i]].push_back({U[i],W[i]});
}
function<void(int, int, ll)> find_dst = [&](int v, int p, ll d){
dst.push_back(d);
for(auto [u, w]: adj[v]){
if(u == p) continue;
if(d+w > k) continue;
find_dst(u, v, d+w);
}
return;
};
find_dst(x, -1, 0);
find_dst(y, -1, 0);
int sol = 0;
sort(dst.begin(), dst.end());
for(ll d: dst){
if(k-d >= 0){
k-= d;
sol++;
}
else break;
}
return sol;
}
# | 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... |