#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ri register
#define pii pair<int,int>
const int inf=0x3f3f3f3f;
inline int rd() {
int x=0,y=1;char c=getchar();
for(;c<'0'||c>'9';c=getchar())if(c=='-')y=-1;
for(;c>='0'&&c<='9';c=getchar())x=(x<<1)+(x<<3)+(c^48);
return x*y;
}
const int N=5e5+5;
int n,fa[N],pre[N],sum[N],t,ans;
char s[N];
stack<int>st;
vector<int>e[N];
void dfs(int x) {
t=0;
if(s[x]==')'&&!st.empty())
t=st.top(),pre[x]=pre[fa[t]]+1,st.pop();
else if(s[x]=='(') st.push(x);
sum[x]=sum[fa[x]]+pre[x];
for(auto i:e[x]) dfs(i);
if(t) st.push(t);
else if(!st.empty()) st.pop();
}
signed main() {
n=rd();cin>>s+1;
for(int i=2;i<=n;i++)
fa[i]=rd(),e[fa[i]].push_back(i);
dfs(1);
for(int i=1;i<=n;i++) ans^=i*sum[i];
cout<<ans;
return 0;
}
讨论区里的错误都检查过了,无果,求调