This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define int long long
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<vector<int>> adj(n+1);
vector<int> H(n+1);
vector<int> C(n+1);
int a;cin>>a>>H[1]>>C[1];
for(int i=2;i<=n;i++){
cin>>a>>H[i]>>C[i];
adj[a].emplace_back(i);
}
function<map<int,int>(int)> dfs = [&](int x){
map<int,int> DP;
DP[0]=C[x];
DP[H[x]]=-C[x];
DP[H[x]+1]=C[x];
for(int&i:adj[x]){
auto curr = dfs(i);
if(DP.size()<curr.size())swap(DP,curr);
for(auto[a,b]:curr){
DP[a]+=b;
if(DP[a]==0)DP.erase(a);
}
}
auto iter = DP.find(H[x]);
while(iter!=DP.end()){
if(iter->second>0)break;
int val = iter->second;
iter = DP.erase(iter);iter--;
iter->second+=val;
}
return DP;
};
cout << dfs(1)[0] << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |