이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "traffic.h"
using namespace std;
int LocateCentre(int N, int P[], int S[], int D[]){
vector<vector<int>> tree(N);
vector<int> maxim(N), total(N), vis(N), siz(N);
priority_queue<pair<int, int>> que;
for(int i = 0; i < N-1; i ++){
tree[S[i]].push_back(D[i]);
tree[D[i]].push_back(S[i]);
}
for(int i = 0; i < N; i ++){
siz[i] = tree[i].size();
if(tree[i].size() == 1){
que.push({-P[i], i});
vis[i] = true;
}
}
while(!que.empty()){
int val = -que.top().first, a = que.top().second;
que.pop();
if(siz[a] == 0){
return a;
}
for(int i : tree[a]){
siz[i]--;
if(vis[i])continue;
maxim[i] = max(val, maxim[i]);
total[i] += val;
if(siz[i] == 1){
vis[i] = true;
que.push({-(total[i]+P[i]), i});
}
}
}
return 0;
}
# | 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... |