This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "closing.h"
using namespace std;
#define int long long
vector<vector<pair<int,int>>> edges;
signed max_score(signed N, signed rootX, signed rootY, long long K, std::vector<signed> U, std::vector<signed> V, std::vector<signed> W){
edges.clear();
edges.resize(N);
for (int i = 0; i < N-1; i++)
{
edges[U[i]].push_back({V[i], W[i]});
edges[V[i]].push_back({U[i], W[i]});
}
vector<int> visited(N);
priority_queue<pair<int,int>> krusk;
krusk.push({0,rootX});
krusk.push({0,rootY});
int sum=0;
int cnt=0;
while(!krusk.empty()){
int x=krusk.top().second, sumw=abs(krusk.top().first); krusk.pop();
if(sum+sumw>K) continue;
visited[x]=true;
sum+=sumw;
cnt++;
for (auto u : edges[x])
{
int v=u.first,w=u.second;
if(visited[v]) continue;
krusk.push({-(sumw+w), v});
}
}
return (int)cnt;
}
# | 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... |