0分求条
查看原帖
0分求条
1110691
wuenzi楼主2024/9/16 07:11
#include<bits/stdc++.h>
using namespace std;
int h[100005];
vector<int> a[100005];
int p[100005];
int n;
void dfs1(int j){
	if(a[j].size()==0){
		h[j]=p[j];
	}else{
		h[j]=p[j];
		for(int i=0;i<a[j].size();i++){
			dfs1(a[j][i]);
			h[j]+=h[a[j][i]];
		}
	}
}
int ans=0;
void dfs2(int j){
	if(h[j]==0)return;
	else{
		if(p[j]==0){
			ans++;
		}
		for(int i=0;i<a[j].size();i++){
			dfs2(a[j][i]);
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>p[i];
	}
	for(int i=1;i<n;i++){
		int o,q;
		cin>>o>>q;
		a[o].push_back(q);
	}
	dfs1(1);
	dfs2(1);
	cout<<ans;
	return 0;
}
2024/9/16 07:11
加载中...