#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 6;
int n, k, a[N], cut = 0, ans = 0;
vector < int > adj[N];
void dfs(int u, int pa){
	if(ans + a[u] > k){
		cut++;
		ans = 0;
	}
	ans += a[u];
	for(auto v : adj[u]){
		if(v == pa)continue;
		dfs(v, u);
	}
}
int main(){
	cin >> n >> k;
	for(int i = 1; i <= n; i++)
		cin >> a[i];
	for(int i = 1; i < n; i++){
		int u, v;
		cin >> u >> v;
		adj[u].push_back(v);
		adj[v].push_back(u);
	}
	dfs(1, 0);
	cout << cut << endl;
}
| # | 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... |