#include "closing.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int max_score(int N, int X, int Y, ll K, vector<int> U, vector<int> V, vector<int> W){
vector<vector<pair<int,int>>> G(N);
for (int i=0; i<N-1; i++){
G[U[i]].push_back({V[i], W[i]});
G[V[i]].push_back({U[i], W[i]});
}
vector<ll> dx(N, -1), dy(N, -1);
dx[X] = 0;
dy[Y] = 0;
queue<pair<int,int>> q;
q.push({X, 0});
q.push({Y, 1});
while (!q.empty()){
int cur = q.front().first, s = q.front().second;
q.pop();
for (pair<int,int> next : G[cur]){
if (s == 0 && dx[next.first] == -1){
dx[next.first] = dx[cur]+(ll)next.second;
q.push({next.first, s});
}
if (s == 1 && dy[next.first] == -1){
dy[next.first] = dy[cur]+(ll)next.second;
q.push({next.first, s});
}
}
}
ll res = 0;
vector<ll> c1(N), c2(N);
priority_queue<ll> pq;
for (int i=0; i<N; i++){
c1[i] = min(dx[i], dy[i]);
c2[i] = max(dx[i], dy[i]);
pq.push(-c1[i]);
if (dx[i]+dy[i] == dx[Y]){
res += c1[i];
c2[i] -= c1[i];
c1[i] = 0;
}
}
int ans = 0;
ll rem = K;
while (!pq.empty() && rem >= -pq.top()){
rem += pq.top();
pq.pop();
ans++;
}
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... |