P10723 [GESP202406 七级] 黑白翻转
查看原帖
P10723 [GESP202406 七级] 黑白翻转
1013018
bulu2023楼主2025/6/26 14:19

30分?😥😥😥😥😥😥😥

#include<bits/stdc++.h>
#define int long long
using namespace std;
vector<int> a[100010];
int color[100010],n,u,v,low,cnt;
bool vis[100010];
int find(){
	for(int i=1;i<=n;i++){
		if(color[i]==1) return i;
	}
	return -1;
}
void dfs(int fa,int x){
	vis[x]=true;
	for(int i=0;i<a[x].size();i++){
		if(vis[a[x][i]]==true) continue;
		if(color[a[x][i]]==1&&color[x]==0) cnt++,color[x]=1;
		dfs(x,a[x][i]);
		if(color[fa]==0&&color[x]==1) cnt++,color[fa]=1;
	}
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>color[i];
	for(int i=1;i<n;i++){
		cin>>u>>v;
		a[u].push_back(v);
		a[v].push_back(u);
	}
	low=find();
	dfs(0,low);
	cout<<cnt-1<<endl;
	return 0;
}
2025/6/26 14:19
加载中...