#include <bits/stdc++.h>
using namespace std;
#define append push_back
#define int long long
const int N=4e5+10,LG=17;
int mod=998244353;
vector<pair<int,int>>g[N];
int cnt[N],sz[N];
int n,k;
void cl(int node,int par=-1){
sz[node]=1;
for(auto [i,j]:g[node]){
if(i==par) continue;
cl(i,node);
sz[node]+=sz[i];
}
}
void dfs(int node,int f,int p=-1){
for(auto [i,j]:g[node]){
if(i==p) continue;
if(j>f){
cnt[node]+=sz[node]-1;
dfs(i,k-j,node);
}
else{
dfs(i,f-j,node);
}
}
}
void solve(int tst){
cin>>n>>k;
for(int i=1;i<n;i++){
int a,b,c;
cin>>a>>b>>c;
a++;
b++;
g[a].append({b,c});
g[b].append({a,c});
}
for(int i=1;i<=n;i++){
cl(i);
dfs(i,k);
}
for(int i=1;i<=n;i++) cout<<cnt[i]<<endl;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int t = 1;
// cin >> t;
for (int i = 0; i < t; i++) {
solve(i);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |