蒟蒻到底少看了什么?
#include<bits/stdc++.h>
using namespace std;
vector<int> p[100005];
vector<int> g[100005];
int a[100005],ans,start,maxn;
int u,v;
int n;
int r;
inline bool dfs(int now){
bool flag=a[now];
for(int i=0;i<p[now].size();i++){
if(dfs(p[now][i])){
if(a[now]==0&&!flag) ans++;
flag=true;
}
}
//if(flag&&a[now]==0) ans++;
return flag;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>r;
a[i]=r;
}
for(int i=1;i<n;i++){
cin>>u>>v;
p[u].push_back(v);
g[v].push_back(u);
if(p[u].size()>maxn) maxn=p[u].size(),start=u;
}
dfs(start);
cout<<ans;
return 0;
}
0 分。