#include <bits/stdc++.h>
using namespace std;
#include "traffic.h"
long long arr[1000005],tot;
vector<int> adj[1000005];
int n;
long long sz[1000005];
long long dfssize(int x, int p){
sz[x]=arr[x];
for(int i:adj[x]){
if(i==p) continue;
sz[x]+=dfssize(i,x);
}
return sz[x];
}
int cent(int x, int p){
for(int i:adj[x]){
if(i==p) continue;
if(sz[i]*2ll>tot) return cent(i,x);
}
return x;
}
int LocateCentre(int N,int P[],int S[],int D[]) {
n=N;
for(int i=0; i<n; i++) arr[i]=P[i],tot+=arr[i];
for(int i=0; i<n-1; i++){
adj[S[i]].push_back(D[i]);
adj[D[i]].push_back(S[i]);
}
dfssize(1,-1);
int rt=cent(1,-1);
dfssize(rt,-1);
for(int i:adj[rt]){
if(sz[i]*2==tot) return i;
}
return rt;
}
# | 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... |