#include <bits/stdc++.h>
#include "traffic.h"
#define pb push_back
using namespace std;
const int N=1e6+5;
vector<int> a[N];
int zem[N],c[N],pa[N];
int kop=0;
void dfs(int v, int p){
pa[v]=p;
kop+=c[v];
int sum=0;
for(auto u : a[v]){
if(u!=p){
dfs(u,v);
sum+=zem[u]+c[u];
}
}
zem[v]=sum;
}
int LocateCentre(int n, int pp[], int S[], int D[]) {
for(int i=0; i<n-1; i++){
a[S[i]].pb(D[i]);
a[D[i]].pb(S[i]);
}
for(int i=0; i<n; i++){
c[i]=pp[i];
}
dfs(0,0);
int r=2e9+5;
for(int v=0; v<n; v++){
int cur=0;
for(auto u : a[v]){
if(u==pa[v]){
cur=max(cur,kop-zem[v]-c[v]);
}else{
cur=max(cur,zem[u]+c[u]);
}
}
r=min(r,cur);
}
return r;
}
# | 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... |