只有16分,其余全WA
附代码
#include<bits/stdc++.h>
using namespace std;
int n,m,h[101],cnt,dp[101][101],son[101],x,y,z;
struct node
{
int to,nxt,s;
}e[101];
void add(int x,int y,int z)
{
e[++cnt].to=y;
e[cnt].s=z;
e[cnt].nxt=h[x];
h[x]=cnt;
}
void dfs(int x,int fa)
{
for(int i=h[x];i!=-1;i=e[i].nxt)
{
int v=e[i].to;
if(v==fa)
continue;
dfs(v,x);
son[x]=son[v]+1;
for(int j=son[x];j>=1;--j)
for(int k=j-1;k>=0;--k)
dp[x][j]=max(dp[x][j],dp[v][k]+dp[x][j-k-1]+e[i].s);
}
}
int main()
{
cin>>n>>m;
memset(h,-1,sizeof(h));
for(int i=1;i<n;++i)
{
cin>>x>>y>>z;
add(x,y,z);
add(y,x,z);
}
dfs(1,0);
cout<<dp[1][m];
return 0;
}