Submission #1299991

#TimeUsernameProblemLanguageResultExecution timeMemory
1299991PetrixBiochips (IZhO12_biochips)C++20
100 / 100
274 ms393116 KiB
#include<iostream>
#include<vector>
using namespace std;

int val[200001],m,t;
vector<int> v[200001];
int dp[200001][501];
int aux[200001];

void dfs(int nod){
    int i;
    aux[nod]=t;
    for(auto it:v[nod]) dfs(it);
    for(i=1;i<=m;i++){
        dp[t+1][i]=max(dp[t][i],dp[aux[nod]][i-1]+val[nod]);
    }
    t++;
}

int main()
{
    int n,aux1,a,i;
    cin>>n>>m;
    for(i=1;i<=n;i++){
        cin>>a>>val[i];
        if(!a) aux1=i;
        else v[a].push_back(i);
    }
    for(i=1;i<=m;i++) dp[0][i]=-1e9;
    dfs(aux1);
    cout<<dp[n][m]<<"\n";
}

#Verdict Execution timeMemoryGrader output
Fetching results...