社区讨论

神秘RE+AC求条

P10723[GESP202406 七级] 黑白翻转参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mmgbb3af
此快照首次捕获于
2026/03/07 20:41
3 天前
此快照最后确认于
2026/03/09 21:55
21 小时前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;

struct Node
{
	int val,nxt;
}node[100010];
int n,head[100010],nxtt,st,stcnt;
bool color[100010],flag[100010];

void push(int x,int y)
{
	node[++nxtt]={y,head[x]};
	head[x]=nxtt;
}
bool dfs(int x,int fa)
{
	bool res=color[x];
	for(int i=head[x],val,t;i!=0;i=node[i].nxt)
		val=node[i].val,
		t=(val!=fa&&dfs(val,x)),
		res=max((int)res,t),
		color[x]=max((int)color[x],t);
	return res;
}
int main()
{
	scanf("%d",&n);
	for(int i=1,t;i<=n;i++)
		scanf("%d",&t),
		color[i]=t,
		st=max(st,color[i]*i),
		stcnt+=color[i];
	for(int i=1,x,y;i<n;i++)
		scanf("%d%d",&x,&y),
		push(x,y),
		push(y,x);
	dfs(st,0);
	int tot=0;
	for(int i=1;i<=n;i++)
		tot+=color[i];
	printf("%d",tot-stcnt);
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...