#include<bits/stdc++.h>
using namespace std;
int tree[101][101],n,q,dp[101][101],e[101][2];
void dfs(int node,int father,int branch){
if(e[node][0]!=-1){
if(dp[node][branch]>0)return;
if(branch==0)return;
for(int i=0;i<=branch;i++){
if(i==0&&e[node][1]!=father)dfs(e[node][1],node,branch-1);
if((i)&&e[node][0]!=father)dfs(e[node][0],node,branch-i-1);
if(i==branch&&e[node][0]!=father)dfs(e[node][0],node,branch-1);
if((i)&&e[node][1]!=father)dfs(e[node][1],node,i-1);
dp[node][branch]=
max(dp[node][branch],dp[e[node][0]][branch-i-1]+dp[e[node][1]][i-1]+tree[node][e[node][0]]+tree[node][e[node][1]]);
}
}
}
int main(){
ios::sync_with_stdio(0);
cin>>n>>q;int a,b,c;
memset(e,-1,sizeof e);
for(int i=1;i<n;i++){
cin>>a>>b>>c;
tree[a][b]=tree[b][a]=c;
if(e[a][0]!=-1)e[a][1]=b;
else e[a][0]=b;
if(e[b][0]!=-1)e[b][1]=a;
else e[b][0]=a;
}
dfs(1,-1,q);
cout<<dp[1][q];
return 0;
}
一直是8pts