0tps求调,要疯了
查看原帖
0tps求调,要疯了
1405718
JoyLosingK楼主2024/10/14 20:34
#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int N=5e5+5;
int w[N],h[N],n,ans,f[N];
char ch[N];
vector<int>s[N];
inline int read(){
	int x=0,f=1;char ch=getchar();
	for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;
	for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';
	return x*f;}
void dfs(int u){
	w[u]=w[f[u]];
	if(ch[u]=='(') w[u]=u;
	else if(w[u]) h[u]=1+h[f[w[u]]],w[u]=w[f[w[u]]];
	for(int i=0;i<s[u].size();i++) dfs(s[u][i]);}
main(){ n=read();
	for(int i=1;i<=n;i++) cin>>ch[i];
	for(int i=2;i<=n;i++){
		f[i]=read();
		s[f[i]].push_back(i);
	} dfs(1),ans=h[1];
	for(int i=2;i<=n;i++) ans^=(i*h[i]);
	cout<<ans; return 0;
} 
2024/10/14 20:34
加载中...