P3177 50 分崩溃了啊啊啊啊啊啊啊啊啊啊啊,能不能帮我调一下啊啊啊啊啊啊啊啊啊啊啊
#include <bits/stdc++.h>
#define ll long long
using namespace std;
struct edge {
ll to, next, val;
} g[2005];
ll n, cnt, h[2005];
ll k, s[2005], dp[2005][2005];
void add(ll x, ll y, ll z) {
g[++cnt].to = y;
g[cnt].val = z;
g[cnt].next = h[x];
h[x] = cnt;
}
void dfs(ll x) {
s[x] = 1;
for (ll i = h[x]; i; i = g[i].next) {
ll y = g[i].to;
if (s[y])
continue;
dfs(y);
ll z = g[i].val;
for (ll a = s[x]; a >= 0; a--)
for (ll b = s[y]; b >= 0; b--)
dp[x][a + b] = max(dp[x][a + b], dp[x][a] + dp[y][b] + b * z * (k - b) + z * (n - k + b - s[y]) * (s[y] -
b));
s[x] += s[y];
}
}
int main() {
cin >> n >> k;
for (ll i = 1; i < n; i++) {
ll u, v, w;
cin >> u >> v >> w;
add(u, v, w);
add(v, u, w);
}
dfs(1);
cout << dp[1][k];
return 0;
}