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;
}