#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,i,j,ans,k;
int a[100005],h[1000005*10];
int x,y;
struct AB{
int a,b,n;
}d[100000];
void cun(int a,int b){
d[++k].a=a,d[k].b=b;
d[k].n=h[a],h[a]=k;
}
void dfs(int k,int s){
if(s>m) return;
if(s==m){
ans++;
return;
}
for(int i=h[k];i;i=d[i].n){
int b=d[i].b;
dfs(b,s+a[b]);
}
}
signed main(){
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++) scanf("%d",&a[i]);
for(i=1;i<n;i++){
scanf("%d%d",&x,&y);
cun(x,y);
}
for(i=1;i<=n;i++) dfs(i,a[i]);
printf("%d",ans);
return 0;
}