This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// #pragma GCC optimize("Ofast")
// #pragma GCC optimize("unroll-loops")
#include "closing.h"
#include <queue>
#include <vector>
using namespace std;
#define ff first
#define ss second
vector<vector<pair<int,int>>>v;
vector<bool>vis;
int max_score(int N, int X, int Y, long long K,
vector<int> U, vector<int> V, vector<int> W){
v.assign(N,vector<pair<int,int>>(0));
vis.assign(N,false);
for(int i=0;i<N-1;i++){
v[U[i]].push_back({V[i],W[i]});
v[V[i]].push_back({U[i],W[i]});
}
priority_queue<pair<long long,int>>q;
int ans=2;
vis[X]=true;
vis[Y]=true;
for(auto [z,w]:v[X]) q.push({-w,z});
for(auto [z,w]:v[Y]) q.push({-w,z});
while(!q.empty()){
auto [d,x]=q.top();
q.pop();
if(K+d<0){
break;
}
K+=d;
vis[x]=true;
ans++;
for(auto [z,w]:v[x]) if(!vis[z]) q.push({d-w,z});
}
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... |