re求调
查看原帖
re求调
1063582
张东篱2011楼主2024/12/1 22:23
include<bits/stdc++.h>
using namespace std;
int a[100005],vis[2000005];
vector<int> g[2000005];
void dfs(int u,int fa)
{
	for(int i=0;i<(int)g[u].size();i++)
	{
		int v=g[u][i];
		if(v!=fa){
			dfs(v,u);
			if(vis[v]) vis[u]=1;
		}
	}
	return ;
}
int main()
{
	int n;
	cin>>n;
	int sum=0,root;
	for(int i=1;i<=n;i++)
	{
	    int x;
	    cin>>x;
		if(x) vis[i]=1,sum++,root=i;
	}
	for(int i=1;i<n;i++)
	{
		int u,v;
		cin>>u>>v;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	dfs(root,0);
	int ans=0;
	for(int i=1;i<=n;i++) ans+=bool(vis[i]);
	cout<<ans-sum<<endl;
	return 0;
}
2024/12/1 22:23
加载中...