麻烦各位帮我看看错哪里了,谢谢!
查看原帖
麻烦各位帮我看看错哪里了,谢谢!
769996
chengqiandi楼主2024/1/25 22:52
#include<bits/stdc++.h>
using namespace std;
int ans=0;
int n,m;
int x,y,value;
const int maxn=1e3+5;
int dp[maxn][maxn];
struct data
{  int to;
   int w;
};
vector<data>h[maxn];
int dfs(int u,int father)
{
	for(int i=1;i<h[u].size();i++)
	{
		int u=h[u][i].to,value=h[u][i].w;
        if(to==father)continue;
		int p=dfs(to,u)+1;
		ans+=p;
		for(int j=min(ans,m);j>=1;--j)
		{
			for(int k=1;k<=min(j,p);k++)
			dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[to][k-1]+value);
		}
	}
	return ans;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>x>>y>>value;
		h[x].push_back((data){int y,value});
		h[y].push_back((data){int x,value});
	}
	dfs(1,0);
	printf("%d",&dp[1][m]);
	return 0;
}
2024/1/25 22:52
加载中...