Submission #1232331

#TimeUsernameProblemLanguageResultExecution timeMemory
1232331countlessTraffic (IOI10_traffic)C++20
100 / 100
996 ms123028 KiB
#include "traffic.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define sp <<" "<< #define endl "\n" int LocateCentre(int N, int pp[], int S[], int D[]) { vector<vector<int>> adj(N); for (int i = 0; i < N-1; i++) { int u = S[i], v = D[i]; adj[u].push_back(v); adj[v].push_back(u); } vector<ll> sum(N); auto solve = [&](auto &&solve, int u, int p) -> void { sum[u] += pp[u]; for (auto &v : adj[u]) { if (v != p) { solve(solve, v, u); sum[u] += sum[v]; } } }; solve(solve, 0, 0); vector<ll> cand(N); auto work = [&](auto &&work, int u, int p) -> void { cand[u] = sum[0] - sum[u]; for (auto &v : adj[u]) { if (v != p) { cand[u] = max(cand[u], sum[v]); work(work, v, u); } } }; work(work, 0, 0); vector<int> o(N); iota(o.begin(), o.end(), 0); sort(o.begin(), o.end(), [&](int i, int j) { if (cand[i] == cand[j]) return i < j; return cand[i] < cand[j]; }); // for (int i = 0; i < N; i++) { // cerr << i sp cand[i] << endl; // } return o[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...