#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<unordered_map>
using namespace std;
unordered_map<char,int>temp;
int cat[100005];
unordered_map<int,vector<int>>child;
void dfs(int pre,int now,int&res,const int&n,int cats)
{
if(cats>n)
return;
if(!child[now].size())
{
//cout<<now<<"*****"<<endl;
++res;
return;
}
for(int i=0;i!=child[now].size();++i)
{
dfs(now,child[now][i],res,n,cat[child[now][i]]?cats+cat[child[now][i]]:0);
}
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;++i)
cin>>cat[i];
int p,q;
for(int i=0;i<n-1;++i)
{
cin>>p>>q;
child[p].push_back(q);
}
int res=0;
dfs(-1,1,res,m,cat[1]);
cout<<res<<endl;
}
12-2 Kefa and Park
最新推荐文章于 2024-02-12 21:41:52 发布