#include "closing.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define eb emplace_back
#define ll long long
#define MP make_pair
#define pii pair<int, int>
const ll INF = 1ll << 50;
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<vector<pii>> adj(N);
for (int i=0; i < N-1; i++) {
adj[V[i]].eb(U[i], W[i]);
adj[U[i]].eb(V[i], W[i]);
}
vector<bool> done(N);
vector<ll> d(N, INF);
d[X] = d[Y] = 0;
priority_queue<pii, vector<pii>, greater<pii>> pq;
pq.emplace(0, X);
pq.emplace(0, Y);
int ans = 0;
while (!pq.empty()) {
auto [_, v] = pq.top();
pq.pop();
if (done[v]) continue;
done[v] = true;
if (d[v] <= K) {
ans++;
K -= d[v];
}
for (auto [u, w] : adj[v]) if (d[v]+w < d[u]) {
d[u] = d[v]+w;
pq.push(MP(d[u], u));
}
}
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... |