Submission #1183488

#TimeUsernameProblemLanguageResultExecution timeMemory
1183488petezaTraffic (IOI10_traffic)C++20
100 / 100
415 ms153048 KiB
#include "traffic.h" #include <vector> #include <utility> #include <climits> #include <iostream> std::vector<int> adj[1000005]; long long tot, sz[1000005]; std::pair<long long, int> ans = {LLONG_MAX, -1}; long long dfs(int x, int pp[], int p=-1) { sz[x] = pp[x]; long long cmax = 0; for(auto &e:adj[x]) { if(e == p) continue; cmax = std::max(cmax, dfs(e, pp, x)); sz[x] += sz[e]; } cmax = std::max(cmax, tot - sz[x]); ans = std::min(ans, {cmax, x}); //std::cout << cmax << ' ' << x << '\n'; return sz[x]; } int LocateCentre(int N, int pp[], int S[], int D[]) { tot = pp[N-1]; for(int i=0;i<N-1;i++) { adj[S[i]].push_back(D[i]); adj[D[i]].push_back(S[i]); tot += pp[i]; } dfs(0, pp); return ans.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...