Submission #886005

#TimeUsernameProblemLanguageResultExecution timeMemory
886005JakobZorzTraffic (IOI10_traffic)C++17
100 / 100
907 ms245052 KiB
#include"traffic.h" #include<iostream> #include<vector> using namespace std; typedef long long ll; int n; vector<int>nodes[1000000]; int people[1000000]; vector<int>ch[1000000]; ll pps[1000000]; void dfs(int node,int par){ pps[node]=people[node]; for(int ne:nodes[node]){ if(ne==par) continue; dfs(ne,node); ch[node].push_back(ne); pps[node]+=pps[ne]; } } int LocateCentre(int N,int pp[],int S[],int D[]){ n=N; for(int i=0;i<n;i++) people[i]=pp[i]; for(int i=0;i<n-1;i++){ nodes[S[i]].push_back(D[i]); nodes[D[i]].push_back(S[i]); } dfs(0,0); ll res=pps[0]; int resn=0; int node=0; while(true){ ll cres=pps[0]-pps[node]; int next=0; for(int c:ch[node]){ if(pps[c]>cres){ cres=pps[c]; next=c; } } //cout<<cres<<" "<<res<<"\n"; if(cres<res){ res=cres; resn=node; }else break; node=next; } return resn; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...