Submission #1300601

#TimeUsernameProblemLanguageResultExecution timeMemory
1300601azik21Biochips (IZhO12_biochips)C++20
60 / 100
2109 ms246384 KiB
#include<iostream>
// #include<bits/stdc++.h>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
#define pb push_back
#define int long long 
#define all(v) (v).begin() , (v).end()
using namespace std;
const int N = 2e5+1 , inf = 1e9;
int dp[N][501] , x[N] , n , k ;
vector<int>g[N];
void dfs(int v , int p ){
    for(auto it:g[v]){
        dfs(it , v);
        for(int i= k ; i >= 0 ; i--){
            for(int j = 0 ; j + i<= k  ; j++){
                dp[v][i+j] = max(dp[v][i] + dp[it][j] , dp[v][i+j]);
            }
        }
    }
    dp[v][1] = max(dp[v][1] , x[v]);
}
signed main(){
    // freopen("d.in" , "r" , stdin);
    // freopen("d.out" , "w" , stdout);
    ios_base::sync_with_stdio(0) , cin.tie(0);
    cin >> n >> k;
    int pr =0 ;
    for(int i= 1; i <= n ; i++){
        int p;
        cin >> p >> x[i];
        if(p == 0 )pr =i ;
        g[p].pb(i);
    }
    dfs(pr , 0 );
    cout << dp[pr][k];
}   
#Verdict Execution timeMemoryGrader output
Fetching results...