Pagini recente » Cod sursa (job #2157291) | Cod sursa (job #282118) | Cod sursa (job #2909380) | Cod sursa (job #266) | Cod sursa (job #685704)
Cod sursa(job #685704)
#include<cstdio>
using namespace std;
int N,M,Q,P,S,i,j,LG[250010],stra[250010][20];
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[1][0]);
for(i=2;i<=N;i++)
{
scanf("%d",&stra[i][0]);
LG[i]=LG[i>>1]+1;
}
for(j=1;(1<<j)<=N;j++)
{
for(i=1;i<=N;i++)
{
stra[i][j]=stra[stra[i][j-1]][j-1];
}
}
}
void solve()
{
for(;M--;)
{
scanf("%d%d",&Q,&P);
while(P)
{
j=LG[P];
Q=stra[Q][j];
S=Q;
P-=(1<<j);
}
printf("%d\n",S);
}
}