Cod sursa(job #676144)
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fin = fopen("stramosi.in", "r"), *fout = fopen("stramosi.out", "w");
int N, M, P, Q, k, i, *T;
fscanf(fin, "%d%d", &N, &M);
T = (int *) malloc((N + 1) * sizeof(int));// Vectorul de parinti
for (i = 1; i <= N; i++) {
fscanf(fin, "%d", &T[i]);
}
for (i = 0; i < M; i++) {
fscanf(fin, "%d%d", &Q, &P);
k = 0;
while(T[Q] && k < P) {
Q = T[Q];
k++;
}
fprintf(fout, "%d\n", k < P ? 0 : Q);
}
free(T);
fclose(fin);
fclose(fout);
return 0;
}