#include<bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN = 2e5 + 5;
int n,k;
vector<vector<pair<int,int>>> adj;
vector<int> sz(MAXN);
int pre=0;
map<int,int>pre2n,n2pre;
void dfs_init(int u, int p) {
int s = 1;
pre2n[u]=pre;
n2pre[pre]=u;
pre++;
for (auto [v,w]: adj[u]) {
if (v==p) continue;
dfs_init(v,u);
s += sz[v];
}
sz[u] = s;
}
int ans=0;
void dfs(int u, int p, int val) {
if(val>=k-1) {
ans += sz[u] * (n-sz[u]);
return;
}
for (auto [v,w] : adj[u]) {
if (v==p)continue;
dfs(v,u,val+w);
}
}
signed main() {
cin>>n>>k;
adj.resize(n+1);
for (int i = 0; i < n-1; i++) {
int a,b,w;cin>>a>>b>>w;
w--;
adj[a].push_back({b,w});
adj[b].push_back({a,w});
}
dfs_init(1, -1);
dfs(1,-1,0);
cout<<ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |