#include #include #include using namespace std; int N,M; int U[200]; vector >G[200]; int dp[200][2001]; void dfs(int u,int p) { dp[u][0]=U[u]; for(pairq:G[u]) { int v=q.first,cost=q.second; if(v==p)continue; dfs(v,u); for(int i=M;i>=2*cost;i--) { for(int j=0;j<=i-2*cost;j++) { dp[u][i]=max(dp[u][i],dp[u][j]+dp[v][i-2*cost-j]); } } } } main() { cin>>N>>M; for(int i=0;i>U[i]; for(int i=1;i>u>>v>>c; G[u].push_back(make_pair(v,c)); G[v].push_back(make_pair(u,c)); } dfs(0,-1); int ans=0; for(int i=0;i<=M;i++)ans=max(ans,dp[0][i]); cout<