Pagini recente » Cod sursa (job #2819681) | Cod sursa (job #2826202) | Cod sursa (job #473134) | Cod sursa (job #2156725) | Cod sursa (job #686545)
Cod sursa(job #686545)
#include<cstdio>
using namespace std;
int N,M,Q,P,S,i,j,LG[250010],stra[20][250010];
void read(),solve();
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d%d",&N,&M);
scanf("%d",&stra[0][1]);
for(i=2;i<=N;i++)
{
scanf("%d",&stra[0][i]);
LG[i]=LG[i>>1]+1;
}
for(i=1;(1<<i)<=N;i++)
{
for(j=1;j<=N;j++)
{
stra[i][j]=stra[i-1][stra[i-1][j]];
}
}
}
void solve()
{
for(;M--;)
{
scanf("%d%d",&Q,&P);
while(P)
{
j=LG[P];
Q=stra[j][Q];
S=Q;
P-=(1<<j);
}
printf("%d\n",S);
}
}