Pagini recente » Cod sursa (job #3362256) | Cod sursa (job #1421173) | Cod sursa (job #3362255) | Cod sursa (job #3363873) | Cod sursa (job #3363891)
#include <fstream>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
const int NMAX=250005;
vector<int> parent,sol;
int str[NMAX][21];
int main()
{
int n,m; cin>>n>>m;
parent.resize(n+1);
for(int i=1;i<=n;i++){
cin>>parent[i];
str[i][0]=parent[i];
}
for(int j=1;j<=20;j++)
for(int i=1;i<=n;i++){
str[i][j]=str[str[i][j-1]][j-1];
}
for(int i=1;i<=m;i++){
int p,q; cin>>p>>q;
for(int j=20;j>=0;j--)
if((1<<j)<=q)
{
p=str[p][j];
q-=1<<j;
}
sol.push_back(p);
}
for(int x:sol) cout<<x<<'\n';
return 0;
}