Submission #1220953

#TimeUsernameProblemLanguageResultExecution timeMemory
1220953KindaGoodGamesPetrol stations (CEOI24_stations)C++20
18 / 100
3594 ms10244 KiB
#include<bits/stdc++.h>

using namespace std;
#define pii pair<int,int>
#define tiii tuple<int,int,int>

vector<vector<pii>> adj;
int n, k;
vector<int>ans;

void DFS(int v, int p, int c, vector<int>& sz){ 
    for(auto t : adj[v]){
        int u,l;
        tie(u,l) = t;
        if(u == p) continue;

        if(c-l < 0) {
            ans[v]+=sz[u];
            DFS(u,v,k-l, sz);
        }else{
            DFS(u,v,c-l,sz);
        }
    }
}
void DFSsz(int v, int p, vector<int>& sz){
    sz[v] = 1;
    for(auto t : adj[v]){
        int u,l;
        tie(u,l) = t;
        if(u == p) continue; 

        DFSsz(u,v, sz); 
        sz[v] += sz[u];
    }
}

int32_t main(){
    cin >> n >> k; 

    adj.resize(n); 
    ans.resize(n); 

    for(int i = 0; i < n-1; i++){
        int a,b,c;
        cin >> a >> b >> c;
        adj[a].push_back({b,c});
        adj[b].push_back({a,c});
    }

    for(int i = 0; i < n; i++){
        vector<int> sz(n);
        DFSsz(i,i,sz);
        DFS(i,i,k,sz);
    }

    for(int i = 0; i < n; i++){
        cout << ans[i] << endl;
    }
}
#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...