比赛 期末考试4 评测结果 AAAAAAAAAAAAATTTTTTTTTTTT
题目名称 树上查询 最终得分 52
用户昵称 zhyn 运行时间 66.941 s
代码语言 C++ 内存使用 82.13 MiB
提交时间 2026-02-12 11:43:45
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long 
#define maxn 1000005
ll a[maxn];
int f[maxn];
vector<int>e[maxn];
int n,q;
ll ans=0;
void solv(int u,int fa,int s,int k){
	if(s>k){
		return;
	}
	ans+=s^a[u];
	for(int v:e[u]){
		if(v==f[u])continue;
		solv(v,fa,s+1,k);
	}
}


int main(){
	
	
	freopen("tree.in","r",stdin);
	freopen("tree.out","w",stdout);
	
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	cin>>n;
	
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	f[1]=1;
	
	for(int i=2;i<=n;i++){
		int x;
		cin>>x;
		f[i]=x;
		e[x].push_back(i);
		e[i].push_back(x);
	}
	
	cin>>q;
	
	while(q--){
		int x,k;
		cin>>x>>k;
		ans=0;
		solv(x,x,0,k);
		cout<<ans<<"\n";
	}
	
	
	
	return 0;
}