이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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=-2;
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... |