Submission #1288247

#TimeUsernameProblemLanguageResultExecution timeMemory
1288247Faisal_SaqibTraffic (IOI10_traffic)C++20
100 / 100
566 ms149252 KiB
#include "traffic.h" #include <bits/stdc++.h> using namespace std; const int N=1e6+10; int dp[N]; vector<int> ma[N]; void dfs(int x,int p=-1) { for(auto y:ma[x]) { if(y!=p) { dfs(y,x); dp[x]+=dp[y]; } } } pair<int,int> bst={2e9,2e9}; void dfs_(int x,int p=-1) { int mx=0; for(auto y:ma[x])mx=max(mx,dp[y]); bst=min(bst,make_pair(mx,x)); for(auto y:ma[x]) { if(y!=p) { dp[x]-=dp[y]; dp[y]+=dp[x]; dfs_(y,x); dp[y]-=dp[x]; dp[x]+=dp[y]; } } } int LocateCentre(int n, int pp[], int S[], int D[]) { for(int i=0;i<n-1;i++) { ma[S[i]].push_back(D[i]); ma[D[i]].push_back(S[i]); } for(int i=0;i<n;i++) { dp[i]=pp[i]; } dfs(0); bst=make_pair(2e9,2e9); dfs_(0); return bst.second; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...