| 比赛 |
期末考试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;
}