Submission #1300054

#TimeUsernameProblemLanguageResultExecution timeMemory
1300054azik21Biochips (IZhO12_biochips)C++20
0 / 100
2109 ms269736 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 inf = 1e17 , N = 5e5 + 4; int n , m ; int x[N]; int dp[N][505]; vector<int>g[N]; void dfs(int v , int p){ for(auto it:g[v]){ if(it==p)continue; dfs(it , v); for(int k =1 ; k <= m ; k++){ for(int i= 0; i + k <= m ;i++){ dp[v][i+k] = max(dp[v][i] + dp[it][k] , dp[v][i+k]); } } } dp[v][1] = max(x[v] , dp[v][1]); } signed main(){ // freopen("d.in" , "r" , stdin); // freopen("d.out" , "w" , stdout); ios_base::sync_with_stdio(0) , cin.tie(0); cin >> n >> m ; 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][m]; }
#Verdict Execution timeMemoryGrader output
Fetching results...