CSES - Shared codeLink to this code:
https://cses.fi/paste/6d696e6936a1432467c6c5/
//endl
// ios_base::sync_with_stdio(false);
// cin.tie(nullptr);
// cout.tie(nullptr);
//global array
#include<iostream>
using namespace std;
int table[200001][30];
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n,q,x,k;
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>table[i][0];
}
for(int j=1;j<30;j++){
for(int i=1;i<=n;i++){
table[i][j]=table[table[i][j-1]][j-1];
}
}
while(q--){
cin>>x>>k;
for(n=0;n<30;n++){
if(k&(1<<n)){
x=table[x][n];
}
}
cout<<x<<"\n";
}
return 0;
}