#include <bits/stdc++.h>
#define int int64_t
const int N = 1e5 + 5;
std::vector<int> a(N);
signed main() {
int n, k;
std::cin >> n >> k;
for(int i = 1; i <= n; i++) {
std::cin >> a[i];
}
std::vector<int> adj[n + 1];
for(int i = 1; i < n; i++) {
int u, v;
std::cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
int ans = 0;
std::vector<int> s(n + 1);
std::function<void(int, int)> dfs = [&] (int v, int p) {
for(auto u : adj[v]) {
if(u == p) {
continue;
}
dfs(u, v);
}
std::vector<int> t;
for(auto u : adj[v]) {
if(u == p) {
continue;
}
t.push_back(s[u]);
}
std::sort(t.begin(), t.end());
s[v] = a[v];
for(int i = 0; i < t.size(); i++) {
if(s[v] + t[i] <= k) {
s[v] += t[i];
}
else {
ans += 1;
}
}
};
dfs(1, 0);
std::cout << ans;
}
# | 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... |