Submission #1032567

#TimeUsernameProblemLanguageResultExecution timeMemory
1032567ezzzayTraffic (IOI10_traffic)C++14
100 / 100
617 ms217716 KiB
#include "traffic.h"
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
const int N=3e6+5;
vector<int>v[N];
int k=0;
int w[N];
int P[N];
int ans=INT_MAX;
int x=-1;
void fun(int a,int p){
    int h=0;
    for(auto b:v[a]){
        if(b==p)continue;
        fun(b,a);
        w[a]+=w[b];
    }
    for(auto b:v[a]){
        if(b==p)continue;
        h=max(h,w[b]);
    }
    w[a]+=P[a];
    h=max(h,k-w[a]);
    if(ans>h){
        ans=h;
        x=a;
    }
}
int LocateCentre(int N, int pp[], int S[], int D[]) {
    int n=N;
    for(int i=0;i<n;i++){
        w[i]=0;
        P[i]=pp[i];
    }
   for(int i=0;i<n-1;i++){
        v[S[i]].pb(D[i]);
        v[D[i]].pb(S[i]);
    }
    
    for(int i=0;i<n;i++){
        k+=pp[i];
    }
    
    fun(0,-1);
    return x;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...