(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 #1109903

#TimeUsernameProblemLanguageResultExecution timeMemory
1109903santi3223Traffic (IOI10_traffic)C++14
100 / 100
678 ms162932 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define vl vector<ll> #define vs vector<string> #define vb vector<bool> #define ull unsigned long long #define pll pair<ll, ll> #define pb push_back #define fi first #define se second #define ff(i, p, x) for (ll i = p; i < x; i++) #define all(a) (a).begin(), (a).end() #define rall(a) (a).rbegin(), (a).rend() #define ed "\n" #define IO std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); ll MOD = 1e9+7; ll minn = LLONG_MAX, centro = -1, tot = 0; vector<vl> conexiones; vl val, sums; void dfs(ll cur, ll parent){ ll maxx = 0; ll cursub = val[cur]; for(auto &adj : conexiones[cur]){ if(adj == parent){ continue; } dfs(adj, cur); maxx = max(maxx, sums[adj]); cursub += sums[adj]; } maxx = max(maxx, tot-cursub); if(maxx < minn){ minn = maxx; centro = cur; } sums[cur] = cursub; } int LocateCentre(int n, int P[], int S[], int D[]){ conexiones = vector<vl>(n); val = vl(n); sums = vl(n); tot = 0; ff(i, 0, n){ tot += P[i]; val[i] = P[i]; if(i < n-1){ conexiones[S[i]].pb(D[i]); conexiones[D[i]].pb(S[i]); } } dfs(0, 0); return centro; } //usaco salva vidas
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...