제출 #1291209

#제출 시각아이디문제언어결과실행 시간메모리
1291209gramathegod바이오칩 (IZhO12_biochips)C++20
100 / 100
565 ms396352 KiB
#include <bits/stdc++.h> using namespace std; const int N=2e5+5, M=505; vector<int>adj[N]; int dp[N][M], sz[N], val[N], n,m,root; void getsz(int i){ for (auto x:adj[i]){ getsz(x); sz[i]+=sz[x]; } if (adj[i].size()==0){ sz[i]=1; } } void dfs(int i){ int maxj=min(m,sz[i]); for (auto x:adj[i]){ dfs(x); int maxk=min(m,sz[x]); for (int j=maxj;j>=0;j--){ for (int k=min(maxk,j);k>=0;k--){ dp[i][j]=max(dp[i][j], dp[i][j-k]+dp[x][k]); } } } dp[i][1]=max(dp[i][1], val[i]); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>n>>m; for (int i=1;i<=n;i++){ int p;cin>>p>>val[i]; if (p==0){ root=i; } adj[p].push_back(i); } getsz(root); dfs(root); cout<<dp[root][m]; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...