【蒙】好奇,为啥我和题解做法差不多,我却错了?
查看原帖
【蒙】好奇,为啥我和题解做法差不多,我却错了?
474522
Anduin_Urien楼主2021/8/23 16:17
#include<bits/stdc++.h>
using namespace std;
const int N=305;
vector<int>son[N];
int f[N][N],v[N],n,m;
void dp(int x){
	f[x][0]=0;
	for(int i=0;i<son[x].size();i++){
		int y=son[x][i];
		dp(y);
		for(int t=m;t>=0;t--){
			for(int j=0;j<=t;j++){
				f[x][t]=max(f[x][t],f[x][t-j]+f[y][j]);
			}
		}
		if(x!=0){
			for(int t=m;t>0;t--){
				f[x][t]=max(f[x][t],f[x][t-1]+v[x]);
			}
		}
	}
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		int a;
		scanf("%d%d",&a,v+i);
		son[a].push_back(i);
	}
	dp(0);
	printf("%d",f[0][m]);
	return 0;
}
2021/8/23 16:17
加载中...