求助大佬,求调
查看原帖
求助大佬,求调
1227031
ARTI001楼主2024/3/7 16:56
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int m,n;
int a,b;
int sum,des[305],val[305],head[305],next[305];
int dp[305][305];

void add(int x,int y,int z)
{
	des[++sum]=y;
	val[sum]=z;
	next[sum]=head[x];
	head[x]=sum;
}

void dfs(int x)
{
	for(int i=head[x];i!=0;i=next[i])
	{
		int y=des[i],z=val[i];
		dfs(y);
		for(int j=m+1;j>=1;j--)
		{
			for(int g=0;g<=j-1;g++)
			{
				dp[x][j]=max(dp[x][j],dp[y][g]+dp[x][j-g]+z);
			}
		}
	}
	return;
}

int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>a>>b;
		add(a,i,b);
	}
	
	dfs(0);
	cout<<dp[0][m+1];
	return 0;
}
2024/3/7 16:56
加载中...