def read_graph(hm, edges):
for i in range(edges - 1):
u, v = map(int, input().split())
hm[u].append(v)
def BFS(hm, s, c, a, noc):
cnt = 0
nc = 0
q = []
q.append(s)
while(len(q) != 0):
t = q.pop(0)
#print(t)
if(t == 1 and a[t-1] == 1):
noc[t] = 1
if(len(hm[t]) == 0):
if(noc[t] <= c):
cnt += 1
else:
current = hm[t]
for i in range(len(hm[t])):
#print(q)
# print(current[i])
# print(noc)
#print(a)
if(visited[current[i]] == 0):
visited[current[i]] = 1
if(a[current[i] - 1] == 1):
noc[current[i]] = noc[t] + a[current[i] - 1]
#print(noc[current[i]])
#print(c)
if(noc[current[i]] > c):
continue
else:
q.append(current[i])
#print(q)
#print(noc)
return cnt
n, m = map(int, input().split())
a = list(map(int, input().split()))
#x,y = map(int, input().split())
hm = []
noc = []
visited = []
for item in range(n + 1):
hm.append([])
noc.append(0)
visited.append(0)
read_graph(hm, n)
print(BFS(hm,1,m,a,noc))
ZGVmIHJlYWRfZ3JhcGgoaG0sIGVkZ2VzKToKICBmb3IgaSBpbiByYW5nZShlZGdlcyAtIDEpOgogICAgdSwgdiA9IG1hcChpbnQsIGlucHV0KCkuc3BsaXQoKSkKICAgIGhtW3VdLmFwcGVuZCh2KQpkZWYgQkZTKGhtLCBzLCBjLCBhLCBub2MpOgogIGNudCA9IDAKICBuYyA9IDAKICBxID0gW10KICBxLmFwcGVuZChzKQogIHdoaWxlKGxlbihxKSAhPSAwKToKICAgIHQgPSBxLnBvcCgwKQogICAgI3ByaW50KHQpCiAgICBpZih0ID09IDEgYW5kIGFbdC0xXSA9PSAxKToKICAgICAgbm9jW3RdID0gMQogICAgCiAgICBpZihsZW4oaG1bdF0pID09IDApOgogICAgICBpZihub2NbdF0gPD0gYyk6CiAgICAgICAgY250ICs9IDEKICAgIGVsc2U6CiAgICAgIGN1cnJlbnQgPSBobVt0XQogICAgICBmb3IgaSBpbiByYW5nZShsZW4oaG1bdF0pKToKICAgICAgICAKICAgICAgICAjcHJpbnQocSkKICAgICAgICMgcHJpbnQoY3VycmVudFtpXSkKICAgICAgICMgcHJpbnQobm9jKQogICAgICAgICNwcmludChhKQogICAgICAgIGlmKHZpc2l0ZWRbY3VycmVudFtpXV0gPT0gMCk6CiAgICAgICAgCXZpc2l0ZWRbY3VycmVudFtpXV0gPSAxCgkgICAgICAgIGlmKGFbY3VycmVudFtpXSAtIDFdID09IDEpOgoJICAgICAgICAgIG5vY1tjdXJyZW50W2ldXSA9IG5vY1t0XSArIGFbY3VycmVudFtpXSAtIDFdCgkgICAgICAgICNwcmludChub2NbY3VycmVudFtpXV0pCgkgICAgICAgICNwcmludChjKQoJICAgICAgICBpZihub2NbY3VycmVudFtpXV0gPiBjKToKCSAgICAgICAgICBjb250aW51ZQoJICAgICAgICBlbHNlOgoJICAgICAgICAgIHEuYXBwZW5kKGN1cnJlbnRbaV0pCiAgICAgICAgI3ByaW50KHEpCiAgI3ByaW50KG5vYykKICByZXR1cm4gY250Cm4sIG0gPSBtYXAoaW50LCBpbnB1dCgpLnNwbGl0KCkpCmEgPSBsaXN0KG1hcChpbnQsIGlucHV0KCkuc3BsaXQoKSkpCiAgI3gseSA9IG1hcChpbnQsIGlucHV0KCkuc3BsaXQoKSkKaG0gPSBbXQpub2MgPSBbXQp2aXNpdGVkID0gW10KCmZvciBpdGVtIGluIHJhbmdlKG4gKyAxKToKICBobS5hcHBlbmQoW10pCiAgbm9jLmFwcGVuZCgwKQogIHZpc2l0ZWQuYXBwZW5kKDApCnJlYWRfZ3JhcGgoaG0sIG4pCnByaW50KEJGUyhobSwxLG0sYSxub2MpKQo=