#include <bits/stdc++.h>
using namespace std;
void speed()
{
ios_base::sync_with_stdio(NULL);
cin.tie(nullptr);
cout.tie(nullptr);
}
long long n;
long long a[200001];
long long h[200001];
long long c[200001];
vector<long long> v[200001];
long long all;
void read()
{
cin>>n;
for(long long i=1;i<=n;i++)
{
cin>>a[i]>>h[i]>>c[i];
if(a[i]!=i)v[a[i]].push_back(i);
all+=c[i];
}
}
long long dp[200001];
long long ans[200001];
long long u(long long i,long long x)
{
if(h[i]>=x)return dp[i];
long long sum=0;
for(long long j=0;j<v[i].size();j++)
{
long long nb=v[i][j];
sum+=u(nb,x);
}
return sum;
}
void dfs(long long i)
{
dp[i]=c[i];
for(long long j=0;j<v[i].size();j++)
{
long long nb=v[i][j];
dfs(nb);
dp[i]+=u(nb,h[i]);
}
}
void dfs1(long long i)
{
long long sum=0;
for(long long j=0;j<v[i].size();j++)
{
long long nb=v[i][j];
dfs1(nb);
sum+=ans[nb];
}
ans[i]=max(dp[i],sum);
}
int main()
{
speed();
read();
dfs(1);
dfs1(1);
cout<<all-ans[1]<<endl;
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |