Pagini recente » Cod sursa (job #563340) | Cod sursa (job #2451869) | Cod sursa (job #1703921) | Cod sursa (job #2957779) | Cod sursa (job #562227)
Cod sursa(job #562227)
#include <cstdio>
#define NMAX 250050
#define LOG 19
int D[LOG][NMAX], n, m, k, i, p, q;
int stramos (int p, int q) {
if (p == 0) return q;
for (k = 0; (1 << k) <= p; k++) ;
k >>= 1;
return stramos (p - (1 << k), D[k][q]);
}
int main () {
freopen ("stramosi.in", "r", stdin);
freopen ("stramosi.out", "w", stdout);
scanf ("%d %d", &n, &m);
for (i = 1; i <= n; i++) {
scanf ("%d", &k);
D[0][i] = k;
}
for (k = 1; (1 << k) <= n + 1; k++)
for (i = 1; i <= n; i++)
D[k][i] = D[k-1][ D[k-1][i] ];
for (i = 1; i <= m; i++) {
scanf ("%d %d", &q, &p);
printf ("%d\n", stramos (p, q));
}
return 0;
}