제출 #1293956

#제출 시각아이디문제언어결과실행 시간메모리
1293956chill7foPaprike (COI18_paprike)C++20
13 / 100
28 ms10996 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];  // bu alt-ağacın acılıq cəmi

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

        long long childSum = dfs(u, v);

        // əgər u alt-ağacının cəmi haddi aşırsa – kəsməliyik
        if (childSum + sum > k) {
            ans++;           // kəsirik
        } else {
            sum += childSum; // birləşdiririk
        }
    }

    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...