Submission #1369596

#TimeUsernameProblemLanguageResultExecution timeMemory
1369596pcheloveksCollecting Stamps 5 (JOI26_stamps)C++20
20 / 100
3094 ms34064 KiB
#define _CRT_SECURE_NO_WARNINGS
 
#include <bits/stdc++.h>
 
#define endl '\n'
 
//#pragma GCC optimize("Ofast")
 
using namespace std;
 
using ll = long long;
using ld = long double;
using pii = pair < int, int >;
using pll = pair < ll, ll >;
 
const ll INF = 2e18;
const ll DIM = 400007;
const ll DIMQ = 2007;
const ld PI = 3.1415926535;
const int mod = 998244353;

int n, d;
vector < int > v[DIM];
int T[DIM];

int curr;
int cnt;

void dfs(int val, int prev, int dist) {

    if(dist >= T[val]) cnt++;

    if(cnt > 0) {
        curr++;
    }

    if(dist + 1 <= d) {
        for(auto to: v[val]) {
            if(to == prev) continue;
            dfs(to, val, dist + 1);
        }
    }

    if(dist >= T[val]) cnt--;
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
 
#ifdef IloveCP
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif  

    cin >> n >> d;

    for(int i = 1; i <= n; i++) cin >> T[i];
    for(int i = 1; i < n; i++) {
        int v1, v2;
        cin >> v1 >> v2;

        v[v1].push_back(v2);
        v[v2].push_back(v1);
    }

    for(int s = 1; s <= n; s++) {
        curr = 0;
        dfs(s, s, 0);

        cout << curr << endl;
    }

    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...