#include "closing.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
vector<ll> distx, disty;
vector<vector<pair<ll,int>>> adj;
void get_dist(vector<ll>& dist, int u, int p = -1){
for(auto& [w, v]:adj[u]) if (v != p){
dist[v] = dist[u] + w;
get_dist(dist, v, u);
}
}
int max_score(int N, int X, int Y, long long K,
std::vector<int> U, std::vector<int> V, std::vector<int> W)
{
adj.resize(N);
for(int i=0;i<N-1;++i){
adj[U[i]].push_back({W[i], V[i]});
adj[V[i]].push_back({W[i], U[i]});
}
distx.resize(N); disty.resize(N);
distx[X] = 0;
disty[Y] = 0;
get_dist(distx, X);
get_dist(disty, Y);
// solve the first subtask
ll ans = 0;
vector<ll> dists;
for(int i=0;i<N;++i) dists.push_back(min(distx[i], disty[i]));
sort(dists.begin(), dists.end());
ll kk = K;
for(auto&d:dists){
if (kk < d) break;
ans += 1;
kk -= d;
}
return ans;
}
# | 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... |