Submission #427674

#TimeUsernameProblemLanguageResultExecution timeMemory
427674shubham20_03Traffic (IOI10_traffic)C++17
0 / 100
15 ms23756 KiB
#include <bits/stdc++.h> // #include "traffic.h" using namespace std; #define FAST ios_base::sync_with_stdio(false); cin.tie(NULL) vector<int> adj[1000000]; int tot_peo[1000000], ans[1000000], peo[1000000]; // refer kartik arora's dp on trees youtube videos // idea is taken from his tree distance ii video void dfs1(int u, int p = -1) { tot_peo[u] = peo[u]; for (int v : adj[u]) if (v != p) { dfs1(v, u); tot_peo[u] += tot_peo[v]; } } void dfs2(int u, int p = -1) { ans[u] = 0; for (int v : adj[u]) if (v != p) ans[u] = max(ans[u], tot_peo[v]); if (p != -1) ans[u] = max(ans[u], tot_peo[0] - tot_peo[u]); for (int v : adj[u]) if (v != p) dfs2(v, u); } int LocateCentre(int N, int P[], int S[], int D[]) { for (int i = 0; i < N; i++) { peo[i] = P[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]); } dfs1(0); dfs2(0); int mn = 2e9; for (int i = 0; i < N; i++) mn = min(mn, ans[i]); return mn; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...