Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- include <bits/stdc++.h>
- #define pb push_back
- using namespace std;
- vector<vector<int> >g;
- vector<bool> v;
- int ans=0;
- int n,m;
- vector<int> d;
- bool bfs(int x){
- queue<int> q;
- q.push(x);
- if(v[x])
- d[x]=1;
- else d[x]=0;
- while(!q.empty()){
- int to=q.front();
- q.pop();
- if(d[to]>m){
- continue;
- }
- for(int i=0; i<g[to].size(); i++){
- int nt=g[to][i];
- if(v[nt]){
- d[nt]=d[to]+1;
- }
- else{
- d[nt]=0;
- }
- q.push(nt);
- }
- }
- return 0;
- }
- int main(){
- cin>>n>>m;
- bool a;
- for(int i=0; i<n; i++){
- cin>>a;
- v.pb(a);
- }
- d.resize(n,-1);
- g.resize(n);
- for(int i=0; i<n-1; i++){
- int x,y;
- cin>>x>>y;
- g[--x].pb(--y);
- }
- /*for(int i=0; i<g.size(); i++)
- if(g[i].size()==0)
- g[i].pb(-1);*/
- bfs(0);
- for(int i=0; i<g.size(); i++){
- if(!g[i].size()){
- if(d[i]!=-1 && d[i]<=m)
- ans++;
- }
- }
- /* for(int i=0; i<d.size(); i++)
- cout<<d[i]<<' ';
- */
- cout<<ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement