#pragma GCC optimize ("O2") #pragma GCC target ("avx2") #include //#include //using namespace atcoder; using namespace std; typedef long long ll; #define rep(i, n) for(int i = 0; i < (n); i++) #define rep1(i, n) for(int i = 1; i <= (n); i++) #define co(x) cout << (x) << "\n" #define cosp(x) cout << (x) << " " #define ce(x) cerr << (x) << "\n" #define cesp(x) cerr << (x) << " " #define pb push_back #define mp make_pair #define chmin(x, y) x = min(x, y) #define chmax(x, y) x = max(x, y) #define Would #define you #define please int N, K; vector> E[200]; vector> P; int dfs(int u, int v) { int kazu = 0; for (auto p : E[u]) { if (p.first != v) { auto q = dfs(p.first, u); P.pb({ p.second, q * p.second }); kazu += q; } } if (kazu == 0) kazu++; return kazu; } int dp[100001]; int main() { cin.tie(0); ios::sync_with_stdio(false); cin >> N >> K; rep(i, N - 1) { int a, b, c; cin >> a >> b >> c; E[a].pb({ b, c }); E[b].pb({ a, c }); } dfs(1, -1); int goukei = 0; for (auto p : P) { for (int j = K - 1; j >= 0; j--) { if (j + p.first <= K) chmax(dp[j + p.first], dp[j] + p.second); } goukei += p.second; } co(goukei + dp[K]); Would you please return 0; }