Submission #362986

#TimeUsernameProblemLanguageResultExecution timeMemory
362986vm152Traffic (IOI10_traffic)C++17
25 / 100
1119 ms262148 KiB
#include <bits/stdc++.h> using namespace std ; #define ios ios_base::sync_with_stdio(0); cin.tie(0) ; cout.tie(0) #define eb emplace_back #define mp make_pair #define f first #define s second #define endl '\n' typedef long long int ll ; const int MAX = 1e6 ; vector<ll> tree[MAX + 1] ; vector<ll> cnt[MAX + 1] ; ll sum = 0 ; bool compare(vector<ll>& a, vector<ll>& b) { if (a[1] < b[1]) return 1 ; if (a[1] == b[1]) { int i = 2, j = 2 ; while (i < (int)a.size() && j < (int)b.size() && a[i] == b[j]) i++ , j++ ; if (i >= (int)a.size()) return 1 ; if (j >= (int)b.size()) return 0 ; if (a[i] > b[j]) return 0 ; return 1 ; } return 0 ; } ll dfs(int node, int s, int p[]) { ll count = 0 ; for (int i : tree[node]) { if (i != s) { count = dfs(i, node, p) + p[i] ; cnt[node].eb(count) ; } } ll sm = 0 ; for (ll i : cnt[node]) sm += i ; cnt[node].eb(sum - sm - p[node]) ; return count ; } int LocateCentre(int n, int p[], int s[], int d[]) { sum = 0 ; for (int i = 0 ; i < n ; i++) sum += p[i] ; for (int i = 0; i < n - 1 ; i++) { tree[s[i]].eb(d[i]) ; tree[d[i]].eb(s[i]) ; } dfs(0, 0, p) ; vector<vector<ll>> ans ; for (int i = 0 ; i < n ; i++) { if (!cnt[i].empty()) { sort(cnt[i].begin(), cnt[i].end()) ; reverse(cnt[i].begin(), cnt[i].end()) ; vector<ll> temp ; temp.eb(i) ; for (ll j : cnt[i]) temp.eb(j) ; ans.eb(temp) ; } } sort(ans.begin(), ans.end(), compare) ; return ans[0][0] ; } /* int main(){ ios ; int n ; cin >> n ; int p[n] ; int s[n] ; int d[n] ; for (int i = 0 ; i < n ; i++) cin >> p[i] ; for (int i = 0 ; i < n - 1 ; i++) cin >> s[i] ; for (int i = 0 ; i < n - 1 ; i++) cin >> d[i] ; int ans = LocateCentre(n, p, s, d) ; cout << ans << endl ; } */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...