记录直达>>>
Code
#include<bits/stdc++.h>
using namespace std;
struct tree{
bool value;
int l,r;
};
int n,q;
string s;
tree a[100005];
void f(int x){
if(a[x].value==1) a[x].value=0;
else a[x].value=1;
if(a[x].l!=0) f(a[x].l);
if(a[x].r!=0) f(a[x].r);
}
int main(){
cin >>n;
a[1].l=a[1].r=0;
for(int i=2;i<=n;i++){
int parent;
cin >>parent;
if(a[parent].l==0) a[parent].l=i;
else a[parent].r=i;
}
cin >>s;
for(int i=0;i<n;i++){
a[i+1].value=s[i]-'0';
}
cin >>q;
for(int i=1;i<=q;i++){
int x;
cin >>x;
f(x);
}
for(int i=1;i<=n;i++){
cout <<a[i].value;
}
return 0;
}