玄关,全RE
查看原帖
玄关,全RE
741578
hhhh2971楼主2024/7/25 19:31
#include<bits/stdc++.h>
using namespace std;

const int inf=2147483647;

int n,q;
int weizhi[100005];
int duiying[100005];
int color[100005];
struct Node
{
	int zuxian,hao;
}a[100005];

void bian(int x)
{
	if (weizhi[x]==inf) return;
	color[weizhi[x]]=(color[weizhi[x]]+1)%2;
	bian(x*2);
	bian(x*2+1);
}

bool cmp(Node x,Node y)
{
	return x.zuxian<y.zuxian;
}

int main()
{
	cin >> n;
	for (int i=1;i<=200000;i++)
		weizhi[i]=inf;
	weizhi[1]=1;
	duiying[1]=1;
	for (int i=1;i<n;i++)
	{
		cin >> a[i].zuxian;
		a[i].hao=i+1;
	}
	sort(a+1,a+n,cmp);
	for (int i=1;i<n;i++)
	{
		if (weizhi[duiying[a[i].zuxian]*2]!=inf)
		{
			weizhi[duiying[a[i].zuxian]*2+1]=a[i].hao;
			duiying[a[i].hao]=duiying[a[i].zuxian]*2+1;
		}
		else
		{
			weizhi[duiying[a[i].zuxian]*2]=a[i].hao;
			duiying[a[i].hao]=duiying[a[i].zuxian]*2;
		}
	}
	for (int i=1;i<=n;i++)
	{
		int x;
		scanf("%1d",&x);
		color[i]=x;
	}
	n=n*2;
	cin >> q;
	for (int i=1;i<=q;i++)
	{
		int x;
		cin >> x;
		bian(duiying[x]);
		for (int i=1;i<=n;i++)
			if (weizhi[i]!=inf) cout << color[i];
	
	return 0;
}
2024/7/25 19:31
加载中...