Pagini recente » Cod sursa (job #2313509) | Cod sursa (job #2224956) | Cod sursa (job #347196) | Cod sursa (job #528757) | Cod sursa (job #2144638)
#include <bits/stdc++.h>
using namespace std;
int N,M;
int Matrix[51][250003];
int LG[250003];
int main()
{
freopen("stramosi.in" , "r" ,stdin);
freopen("stramosi.out" , "w", stdout);
scanf("%d%d" ,&N , &M);
scanf("%d", &Matrix[0][1]);
for ( int i = 2 ; i <= N ; ++i)
{
scanf("%d", &Matrix[0][i]);
LG[i] = LG[i/2]+1;
}
for ( int k = 1; ( 1 << k ) <= N ; ++k)
for ( int i = 1; i<= N ; ++i)
Matrix[k][i] = Matrix[k-1][Matrix[k-1][i]];
for ( int i = 1; i <= M ; ++i)
{
int x,y;
scanf("%d%d" , &x , &y);
while(y)
{
x = Matrix[LG[y]][x];
y = y - ( 1 << LG[y]);
}
printf("%d\n", x);
}
}