#include<bits/stdc++.h>
using namespace std;
long long n,a[100001],s,sum[100001],ans;
int t[200001],nt[200001],h[200001],ssum;
void add(int x,int y){
t[++ssum]=y;
nt[ssum]=h[x];
h[x]=ssum;
return;
}
void dfs(int u,int fa){
sum[u]=a[u];
for(int i=h[u];~i;i=nt[i]){
int v=t[i];
if(v!=fa){
dfs(v,u);
sum[u]+=sum[v];
}
}
if(!sum[u]) ans++;
}
int main(){
cin>>n;
memset(h,-1,sizeof h);
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]) s=i;
}
for(int i=1,x,y;i<n;i++){
cin>>x>>y;
add(x,y);
add(y,x);
}
dfs(s,0);
cout<<n-sum[s]-ans;
return 0;
}
代码求调谢谢!!!