AcWing 6272. 二叉树 ← dfs + 邻接表
原题链接
简单
作者:
hnjzsyjyj
,
2025-04-13 22:45:39
· 河南
,
所有人可见
,
阅读 4
【算法代码】
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
vector<int> v[maxn];
int cnt[maxn];
void dfs(int x,int num) {
for(int i=0; i<v[x].size(); i++) {
int j=v[x][i];
cnt[j]+=num;;
dfs(j,cnt[j]);
}
}
int main() {
int n,idx;
cin>>n;
for(int i=2; i<=n; i++) {
cin>>idx;
v[idx].push_back(i);
}
string s;
int q;
cin>>s>>q;
while(q--) {
int x;
cin>>x;
cnt[x]++;
}
dfs(1,cnt[1]);
for(int i=1; i<=n; i++) {
if(cnt[i]%2==0) s[i-1]=='1'?cout<<1:cout<<0;
else s[i-1]=='1'?cout<<0:cout<<1;
}
return 0;
}