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 "traffic.h"
using namespace std;
int LocateCentre(int N, int P[], int S[], int D[]){
vector<vector<long long>> tree(N);
vector<long long> maxim(N), total(N), vis(N), siz(N);
priority_queue<long long> que;
for(long long i = 0; i < N-1; i ++){
tree[S[i]].push_back(D[i]);
tree[D[i]].push_back(S[i]);
}
for(long long i = 0; i < N; i ++){
siz[i] = tree[i].size();
if(tree[i].size() == 1){
que.push(-(P[i] * 10000000 + i));
vis[i] = true;
}
}
while(!que.empty()){
long long val = (-que.top())/10000000, a = (-que.top())%10000000;
que.pop();
if(siz[a] == 0){
return a;
}
for(long long i : tree[a]){
siz[i]--;
if(vis[i])continue;
maxim[i] = max((long long)val, maxim[i]);
total[i] += val;
if(siz[i] == 1){
vis[i] = true;
que.push(-((total[i]+P[i]) *10000000+ 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... |