Pagini recente » Cod sursa (job #3310213) | Cod sursa (job #2083152) | Monitorul de evaluare | Cod sursa (job #3335310) | Cod sursa (job #3318288)
#include <bits/stdc++.h>
using namespace std;
//#define int long long
const int maxn=2e5+5;
const int LOG=21;
int up[maxn][LOG];
int p[maxn];
int query(int nod,int h) {
int nodcur=nod;
for (int i=0;i<LOG;i++) {
if ((1<<i)&h)nodcur=up[nodcur][i];
}
return nodcur;
}
signed main() {
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int n,q;
cin>>n>>q;
p[0]=0;
up[0][0]=0;
for(int i=1;i<=n;i++) {
cin>>p[i];
up[i][0]=p[i];
}
for (int i=1;i<=n;i++) {
for (int j=1;j<LOG;j++) {
up[i][j]=up[up[i][j-1]][j-1];
}
}
for (int i=1;i<=q;i++) {
int nod,h;
cin>>nod>>h;
cout<<query(nod,h)<<'\n';
}
return 0;
}