(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #390988

#TimeUsernameProblemLanguageResultExecution timeMemory
390988SortingTraffic (IOI10_traffic)C++17
100 / 100
1423 ms166696 KiB
#include "traffic.h" #include <bits/stdc++.h> using namespace std; const int N = 1e6 + 3; int n, *p, *s, *d, sz[N], sum_all = 0, ans, ver_ans; vector<int> adj[N]; void dfs_solve(int u, int par = -1){ int sum = 0, mx = 0; for(int to: adj[u]) if(to != par){ dfs_solve(to, u); mx = max(mx, sz[to]); sum += sz[to]; } mx = max(mx, sum_all - sum - p[u]); if(mx < ans){ ans = mx; ver_ans = u; } } void dfs_sz(int u, int par = -1){ sz[u] = p[u]; for(int to: adj[u]) if(to != par){ dfs_sz(to, u); sz[u] += sz[to]; } } int LocateCentre(int _n, int _p[], int _s[], int _d[]) { n = _n, p = _p, s = _s, d = _d; for(int i = 0; i < n; ++i) adj[i].clear(); for(int i = 0; i < n - 1; ++i){ adj[s[i]].push_back(d[i]); adj[d[i]].push_back(s[i]); } sum_all = 0, ans = INT_MAX; for(int i = 0; i < n; ++i) sum_all += p[i]; dfs_sz(0); dfs_solve(0); return ver_ans; } /* 5 10 10 10 20 20 0 2 1 2 2 3 3 4 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...