#include "traffic.h"
#include <bits/stdc++.h>
using namespace std;
vector<int>adj[1000010], a, sz;
long long sum;
void dfs(int node, int parent){
sz[node] = a[node];
for(auto i : adj[node]){
if(i == parent) continue;
dfs(i, node);
sz[node] += sz[i];
}
}
int cent(int node, int parent){
for(auto i : adj[node]){
if(i == parent) continue;
if(2*sz[i] > sum) return cent(i, node);
}
return node;
}
int LocateCentre(int N, int pp[], int S[], int D[]) {
a.resize(N);
sz.resize(N);
for(int i = 0; i < N; i++){
a[i] = pp[i];
sum += a[i];
}
for(int i = 0; i < N-1; i++){
adj[S[i]].push_back(D[i]);
adj[D[i]].push_back(S[i]);
}
dfs(0, -1);
return cent(0, -1);
}
# | 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... |