为什么mle?
查看原帖
为什么mle?
1017193
yun_playing楼主2023/11/14 17:45
#include<iostream>
#include<cstdio>
#define maxn 1000
	using namespace std;
	int t,m,cnt;
	int head[maxn];
	int a[maxn][maxn];
	struct edge
	{
		int net,to;
	}each[maxn];
	void add(int a,int b)
	{
		each[++cnt].net=head[a];
		each[cnt].to=b;
		head[a]=cnt;
	}
	void dp(int now)
	   {	for(int i=head[now];i;i=each[now].net)
		    {int to=each[now].to;
			dp(to);
			for(int l=m+1;l>=1;l--)
		    {
			for(int k=0;k<l;k++)
			{
			a[i][i]=max(a[i][l],a[to][k]+a[i][l-k]);}}	}
		}
	int  main()
	{
			cin>>t;cin>>m;
			for(int i=1;i<=t;i++)
			{
				int fa;cin>>fa>>a[i][1];
				add(fa,i);
			}
			dp(0);
			printf("%d\n",a[0][m+1]);
			return 0;
		}
一直爆0,几乎和题解一样了
2023/11/14 17:45
加载中...