本人蒟蒻求大佬优化思路QwQ
#include<bits/stdc++.h>
using namespace std;
char s[100010];
int n, q, x;
vector<int> v[100010];
char fan(char c) {
return c == '0' ? '1' : '0';
}
void dfs(int x) {
if (x == 0) {
return ;
}
s[x - 1] = fan(s[x - 1]);
for (int i = 0; i < v[x].size(); i++) {
dfs(v[x][i]);
}
}
int main() {
scanf("%d", &n);
for (int i = 2; i <= n; i++) {
scanf("%d", &x);
v[x].push_back(i);
}
scanf("%s%d", s, &q);
for (int i = 1; i <= q; i++) {
scanf("%d", &x);
dfs(x);
}
printf("%s", s);
return 0;
}