Submission #1295037

#TimeUsernameProblemLanguageResultExecution timeMemory
1295037simona1230Worst Reporter 4 (JOI21_worst_reporter4)C++20
0 / 100
3 ms1276 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...