Pagini recente » Cod sursa (job #1814857) | Cod sursa (job #482077) | Cod sursa (job #227271) | Cod sursa (job #1062542) | Cod sursa (job #197288)
Cod sursa(job #197288)
#include <stdio.h>
#define QMAX 300005
#define NMAX 250005
#define LOG 18
int M, N;
int P[LOG][NMAX]; // P[a][b] al 2^b-lea parinte a lui a.
int main(void)
{
int i , j , tmp, parinte, nod, exp;
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
scanf("%d %d", &N, &M);
for( i = 0; i< N; i++){
scanf("%d", &P[0][i+1]);
}
for( j = 1; j < LOG; j++)
for( i = 1; i < N+1; i++)
P[j][i] = P [j-1][ P[j-1][i]];
for( i = 0; i < M; i++){
scanf("%d %d ", &nod, &parinte);
while(parinte){
for (tmp = 1, exp = 0; (tmp<<1) <= parinte; tmp <<=1, ++exp);
nod = P[exp][nod];
parinte = parinte - tmp;
}
printf("%d\n", nod);
}
return 0;
}