求助:按样例输入最后结果是40(只选择了2、5),应该怎么改
#include<bits/stdc++.h>
using namespace std;
int head[105],f[105][105],m,n,cnt,num[105];
struct node{
int to,next;
}a[500];
void add(int x,int y){
cnt++;
a[cnt].to =y;
a[cnt].next =head[x];
head[x]=cnt;
}
void dfs(int start){
for(int i=head[start];i;i=a[i].next ){
int c=a[i].to ;
dfs(c);
for(int j=m;j>=1;j--){
for(int g=j-1;g>=1;g--){
f[start][j]=max(f[start][j],f[start][j-g]+f[c][g]);
}
}
}
}
int main(){
head[1]=0;
cin>>n>>m;
for(int i=1;i<n;i++){
int x,y;
cin>>x>>y;
if(x>y)swap(x,y);
cin>>f[y][1];
add(x,y);
}
m++;
dfs(1);
cout<<f[1][m];
return 0;
}