#include<bits/stdc++.h>
using namespace std;
const int N=450;
struct data {
int to,stb,vol;
} a[N];
int head[2*N],root,tot,v[N],f[N][101],n,p,o[N];
int num[N];
void insert(int x,int y,int z) {
a[++tot].stb=head[x];
a[tot].to=y,a[tot].vol=z;
head[x]=tot;
}
void dp(int x,int fa) {
for(int i=head[x]; i; i=a[i].stb) {
int xx=a[i].to;
if(xx==fa) continue;
dp(xx,x);num[x]+=num[xx]+1;
for(int j=min(num[x],p); j; j--) {//j--
for(int k=min(num[xx],j-1); k>=0; k--)
f[x][j]=max(f[x][j],f[x][j-k-1]+f[xx][k]+a[i].vol);
}
}
// for(int j=1; j<=p; j++)
// cout<<f[x][j]<<" "<<x<<" "<<j<<endl;
}
int main() {
scanf("%d%d",&n,&p);
for(int i=1; i<=n-1; i++) {
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
insert(x,y,z);
insert(y,x,z);
}
dp(1,0);
cout<<f[1][p];
return 0;
}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 »
二叉苹果树