Submission #550992

#TimeUsernameProblemLanguageResultExecution timeMemory
550992JomnoiTraffic (IOI10_traffic)C++17
100 / 100
1186 ms168624 KiB
#include <bits/stdc++.h> #include "traffic.h" using namespace std; const int MAX_N = 1e6 + 10; const int INF = 2e9 + 7; int P[MAX_N], sum[MAX_N], max_congestion = INF, ans; vector <int> graph[MAX_N]; int dfs(const int &u, const int &p) { sum[u] = P[u]; for(auto v : graph[u]) { if(v != p) { sum[u] += dfs(v, u); } } return sum[u]; } void dfs2(const int &u, const int &p, const int &ps) { int ma = ps; for(auto v : graph[u]) { if(v == p) { continue; } ma = max(ma, sum[v]); dfs2(v, u, sum[u] + ps - sum[v]); } if(max_congestion > ma) { max_congestion = ma; ans = u; } } int LocateCentre(int N, int pp[], int S[], int D[]) { for(int i = 1; i <= N; i++) { P[i] = pp[i - 1]; } for(int i = 0; i < N - 1; i++) { S[i]++, D[i]++; graph[S[i]].push_back(D[i]); graph[D[i]].push_back(S[i]); } dfs(1, -1); dfs2(1, -1, 0); return ans - 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...