记录编号 600482 评测结果 WWAAWWWWWW
题目名称 终末鸟 最终得分 20
用户昵称 Gravatardream 是否通过 未通过
代码语言 C++ 运行时间 15.811 s
提交时间 2025-05-05 14:23:41 内存使用 31.33 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=10000005,M=N*2;
int n,q;
int fa[N],b[N],ez[N],ans;
void read(int &x){
	int sum=0;
	char c;
	c=getchar();
	while(c<'0'||c>'9'){
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		sum=sum*10+c-'0';
		c=getchar();
	}
	x=sum;
}
int main(){
//	freopen("pretest4.in","r",stdin);
//	freopen("pretest.out","w",stdout);
	freopen("birds.in","r",stdin);
	freopen("birds.out","w",stdout);
	read(n);
	for(int i=1;i<n;i++){
		int x,y;
		read(x);
		read(y);
		fa[y]=x;
	}
	for(int i=1;i<=n;i++){
		read(b[i]);
		if(b[i]){
			if(ez[i]>=2) ans-=ez[i]-1;
			if(b[fa[i]]&&ez[i]) ans--;
			if(!ez[i]&&!b[fa[i]]) ans++;
			ez[fa[i]]++;
			b[i]=1;
		}
	}
	cout<<ans<<"\n";
	read(q);
	for(int i=1;i<=q;i++){
		int x;
		read(x);
		if(!b[x]){
			if(ez[x]>=2) ans-=ez[x]-1;
			if(b[fa[x]]&&ez[x]) ans--;
			if(!ez[x]&&!b[fa[x]]) ans++;
			ez[fa[x]]++;
			b[x]=1;
		}
		else{
			ans+=ez[x]-1;
			if(b[fa[x]]) ans++;
			ez[fa[x]]--;
			b[x]=0;
		}
		cout<<ans<<"\n";
	}
	return 0;
}