#pragma GCC optimize("O3") #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using P = pair; using T = tuple; template inline T chmax(T &a, const T b) {return a = (a < b) ? b : a;} template inline T chmin(T &a, const T b) {return a = (a > b) ? b : a;} constexpr int MOD = 1e9 + 7; constexpr int inf = 1e9; constexpr long long INF = 1e18; #define all(a) (a).begin(), (a).end() int dx[] = {1, 0, -1, 0}; int dy[] = {0, 1, 0, -1}; vector value(110, 1); vector children_cnt(110, 0); void dfs(int cv, int pv, vector> &G){ for(auto nxt : G[cv]){ int nv, cost, idx; tie(nv, cost, idx) = nxt; if(nv == pv) continue; dfs(nv, cv, G); children_cnt[cv] += children_cnt[nv]; value[idx] = children_cnt[nv]; } if(children_cnt[cv] == 0) children_cnt[cv] = 1; return ; } int main(){ cin.tie(0); ios::sync_with_stdio(false); int n, k; cin>>n>>k; vector a(n-1), b(n-1), c(n-1); vector> G(n); for(int i=0; i>a[i]>>b[i]>>c[i]; a[i]--, b[i]--; G[a[i]].emplace_back(b[i], c[i], i); G[b[i]].emplace_back(a[i], c[i], i); } dfs(0, -1, G); for(int i=0; i dp(k + 1, 0); for(int i=0; i