제출 #1293962

#제출 시각아이디문제언어결과실행 시간메모리
1293962chill7foPaprike (COI18_paprike)C++20
13 / 100
28 ms12660 KiB
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 200000 + 5;

vector<int> g[MAXN];
int b[MAXN];
int n, k;
long long ans = 0;

long long dfs(int v, int p) {
    long long sum = b[v];

    if (sum > k) {
        ans++; 
        return 0;  
    }

    for (int u : g[v]) {
        if (u == p) continue;

        long long child = dfs(u, v);

        if (sum + child > k) {
            ans++;   
        } else {
            sum += child;
        }
    }

    return sum;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> n >> k;
    for (int i = 1; i <= n; i++)
        cin >> b[i];

    for (int i = 0; i < n - 1; i++) {
        int x, y;
        cin >> x >> y;
        g[x].push_back(y);
        g[y].push_back(x);
    }

    dfs(1, -1);

    cout << ans << "\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...