16分求助
查看原帖
16分求助
531776
LYM20114楼主2022/8/22 12:04

WA了好多

#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
int n,m,root;
vector <int> V[105];
bool vis[105];
int G[105][105];
int f[105][105];
void dp(int x){
	vis[x] = 1;
	for(int i = 0;i < V[x].size();i++){
		int xx = V[x][i];
		if(vis[xx]) continue;
		vis[xx] = 1;
		dp(xx);
		for(int j = m;j >= 1;j--)
			for(int k = j - 1;k >= 0;k--)
				f[x][j] = max(f[x][j],f[xx][k] + f[xx][j - k - 1] + G[x][xx]);
	}
	return;
}
int main(){
	cin >> n >> m;
	for(int i = 1;i < n;i++){
		int u,v,w;
		cin >> u >> v >> w;
		G[u][v] = w;
		G[v][u] = w;
		V[u].push_back(v);
		V[v].push_back(u);
	}
	dp(1);
	cout << f[1][m];
	return 0;
}
2022/8/22 12:04
加载中...