#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |