记录
#include <bits/stdc++.h>
using namespace std;
#define N 100005
int n,cl[N],dp[N],s,cnt;
vector <int> e[N];
void dfs(int x,int fa){
dp[x]=1;
for(int i=0;i<e[x].size();i++){
int y=e[x][i];
if(y==fa) continue;
dfs(y,x);
if(cl[y]){
cl[x]=1;
dp[x]+=dp[y];
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>cl[i];
if(cl[i]) cnt++;
}
for(int i=1;i<n;i++){
int u,v;
cin>>u>>v;
e[u].push_back(v);
e[v].push_back(u);
}
for(int i=1;i<=n;i++){
if(cl[i]){
s=i;
break;
}
}
dfs(s,0);
cout<<dp[s]-cnt;
return 0;
}