救救孩子吧
查看原帖
救救孩子吧
1080250
littleFond楼主2024/12/2 18:53
#include<bits/stdc++.h>
#define int long long
#define double long double
using namespace std;
const int N=1e5+10,root=1;
int n,a;
int lazy[N];
char c;
struct node{
	int father=-1;
	int kid[2]={-1,-1};
	int idx;
	int v;
}tree[N];
void dfs(int p){
	tree[p].v^=lazy[p];
	cout<<tree[p].v;
	if(tree[p].kid[0]!=-1){
		lazy[tree[p].kid[0]]^=lazy[p];
		dfs(tree[p].kid[0]);
	}if(tree[p].kid[1]!=-1){
		lazy[tree[p].kid[1]]^=lazy[p];
		dfs(tree[p].kid[0]);
	}
}
signed main(){
	cin>>n;
	for(int i=1;i<n;i++){
		cin>>a;
		tree[i].father=a;
		tree[a].kid[tree[a].idx]=i;
		tree[a].idx++;
	}for(int i=1;i<=n;i++){
		cin>>c;
		tree[i].v=c-'0';
	}cin>>n;
	while(n--){
		cin>>a;
		lazy[a]++;
		lazy[a]%=2; 
	}dfs(root);
	return 0;
}

输出错了

2024/12/2 18:53
加载中...