Pagini recente » Cod sursa (job #955347) | Cod sursa (job #1491097) | Cod sursa (job #1667615) | Cod sursa (job #2028103) | Cod sursa (job #1586280)
#include<stdio.h>
#define NRMOSI 18
#define NMAX 250000
FILE *in, *out;
int tati[NMAX][NRMOSI + 1], i, j, q, n, nr, pers;
int main () {
in = fopen("stramosi.in", "r");
out = fopen("stramosi.out", "w");
fscanf(in, "%d%d", &n, &q);
for(i = 1; i <= n; i++) {
fscanf(in, "%d", &tati[i][1]);
}
for(i = 1; i < NRMOSI; i++) {
for(j = 1; j <= n; j++) {
tati[j][(i + 1)] = tati[tati[j][(1 << (i - 1))]][(1 << (i - 1))];
}
}
//*
for(i = 1; i <= n; i++) {
for(j = 0; j < 5; j++) {
printf("%d ", tati[i][j]);
}
printf("\n");
}
//*/
for(i = 0; i < q; i++) {
fscanf(in, "%d%d", &nr, &pers);
for(j = 0; j <= 18; j++) {
if((pers & (1 << j)) != 0) {
nr = tati[nr][j + 1];
}
}
fprintf(out, "%d\n", nr);
}
fclose(in);
fclose(out);
return 0;
}