제출 #1322780

#제출 시각아이디문제언어결과실행 시간메모리
1322780jahongirFireworks (APIO16_fireworks)C++20
7 / 100
13 ms19232 KiB
#pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include <bits/stdc++.h> using namespace std; #define pb push_back #define all(a) a.begin(),a.end() typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; typedef unsigned long long ull; typedef vector<int> vi; const int mxn = 6e5+1; vector<pii> g[mxn]; priority_queue<ll> pq[mxn]; ll val[mxn]; void dfs(int u = 1, int col = 0){ int mx = 0; for(auto [v,c] : g[u]){ dfs(v,c); if((int) pq[mx].size() < (int) pq[v].size()) mx = v; } if(mx==0){ pq[u].push(col); pq[u].push(col); val[u] = col; return; } pq[u].swap(pq[mx]); val[u] = val[mx]; for(auto [v,c] : g[u]) if(v!=mx){ while(!pq[v].empty()){ pq[u].push(pq[v].top()); pq[v].pop(); } val[u] += val[v]; } for(int i = 1; i < (int) g[u].size(); i++) pq[u].pop(); val[u]+=col; pq[u].pop(); auto x = pq[u].top(); pq[u].pop(); pq[u].push(x+col); pq[u].push(x+col); } void solve(){ int n,m; cin >> n >> m; for(int i = 2; i <= n+m; i++){ int p,c; cin >> p >> c; g[p].emplace_back(pii{i,c}); } dfs(); pq[1].pop(); while(!pq[1].empty()){ val[1] -= pq[1].top(); pq[1].pop(); } cout << val[1]; } signed main(){ cin.tie(0)->sync_with_stdio(0); int t = 1; // cin >> t; while(t--){solve();} }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...