Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- const int N=1e5+5,
- INF=1e9+7;
- int ans;
- int n, m;
- vector<int >a[N];
- bool usd[N], c[N];
- void dfs(int v, int sum=0)
- {
- usd[v]=true;
- sum+=c[v];
- if (sum>m) return;
- if (!c[v]) sum=0;
- if (a[v].size()==1) ans++;
- for (int i=0; i<a[v].size(); ++i){
- int to=a[v][i];
- if (!usd[to])
- dfs(to, sum);
- }
- }
- main(){
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- cin>>n>>m;
- for (int i=1; i<=n; ++i){
- cin>>c[i];
- }
- for (int i=1; i<n; ++i){
- int x, y;
- cin>>x>>y;
- a[x].push_back(y);
- a[y].push_back(x);
- }
- dfs(1);
- cout<<ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement