#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e5;
int h[maxn+2],n,k;
vector<int>adj[maxn+2];
int ans=0;
int dfs(int cur,int par){
vector<int>isi;
int sum=h[cur];
for(auto x : adj[cur]){
if(x==par)continue;
isi.push_back(dfs(x,cur));
sum+=isi.back();
}
sort(isi.begin(),isi.end());
for(int q=isi.size()-1;q>=0 && sum>k;q--){
ans++;
sum-=isi[q];
}
return sum;
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>k;
for(int q=1;q<=n;q++)cin>>h[q];
for(int q=1;q<n;q++){
int u,v; cin>>u>>v;
adj[u].push_back(v);
adj[v].push_back(u);
}
dfs(1,-1);
cout<<ans<<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... |