제출 #1140556

#제출 시각아이디문제언어결과실행 시간메모리
1140556SyedSohaib_123Petrol stations (CEOI24_stations)C++20
0 / 100
3593 ms18972 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...