Submission #1293829

#TimeUsernameProblemLanguageResultExecution timeMemory
1293829zeyd123Paprike (COI18_paprike)C++20
13 / 100
74 ms10788 KiB
#include <bits/stdc++.h>
using namespace std;

/*
      ---===ASCII help===---
     '0' -> 48     '9' -> 57
     'A' -> 65     'Z' -> 90
     'a' -> 97     'z' -> 122
*/

const long long mod = 1e9 + 7;

int n, k;
vector<int> h;
vector<vector<int>> g;
int cuts = 0;

long long dfs(int u, int parent) {
    long long sum = h[u];
    for (int v : g[u]) {
        if (v == parent) continue;
        long long child_sum = dfs(v, u);
        if (sum + child_sum <= k) sum += child_sum;
        else cuts++;
    }
    return sum;
}

void solve() {
    cin >> n >> k;
    h.resize(n);
    for (int i = 0; i < n; i++) cin >> h[i];
    g.resize(n);
    for (int i = 0; i < n - 1; i++) {
        int x, y;
        cin >> x >> y;
        x--; y--;
        g[x].push_back(y);
        g[y].push_back(x);
    }
    long long ans = dfs(0, -1);
    cout << cuts << "\n";
}

int main() {
    int t = 1;
    //cin >> t;
    while (t--) {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...