本蒟蒻不会写栈,所以写了这玩意:
#include<bits/stdc++.h>
using namespace std;
vector<int>g[500010];
string s;
long long ans=0;
void dfs(int x,string y) {
int l=0,r=0,cnt=0;
for(int i=0;i<y.size();i++) {
if(y[i]=='(') {
l++;
} else {
r++;
}
}
cnt=min(l,r);
ans^=(x*cnt);
for(int i=0;i<g[x].size();i++) {
int nx=g[x][i];
string ny=y;
ny.push_back(s[nx-1]);
dfs(nx,ny);
}
}
int main() {
int n;
cin>>n;
cin>>s;
for(int i=2;i<=n;i++) {
int x;
cin>>x;
g[x].push_back(i);
}
string t=s.substr(0,1);
dfs(1,t);
cout<<ans<<endl;
return 0;
}
所以哪里错了?