Submission #535714

#TimeUsernameProblemLanguageResultExecution timeMemory
535714benedict0724Fireworks (APIO16_fireworks)C++17
7 / 100
5 ms7384 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll l[300002], r[300002], h[300002]; vector<pair<int, ll>> adj[300002]; void dfs(int x, ll p) { if(adj[x].empty()) { l[x] = r[x] = p; h[x] = 0; return; } vector<ll> v; for(auto u : adj[x]) { int i = u.first; ll c = u.second; dfs(i, c); v.push_back(l[i]); v.push_back(r[i]); } sort(v.begin(), v.end()); int s = adj[x].size(); l[x] = v[s-1]; r[x] = v[s]; h[x] = 0; for(auto u : adj[x]) { int i = u.first; if(r[i] < l[x]) h[x] += h[i] + l[x] - r[i]; else if(l[x] < l[i]) h[x] += h[i] + l[i] - l[x]; else h[x] += h[i]; } l[x] += p; r[x] += p; } int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n, m; cin >> n >> m; for(int i=2;i<=n+m;i++) { ll a, b; cin >> a >> b; adj[a].push_back({i, b}); } dfs(1, 0); cout << h[1]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...