Pagini recente » Cod sursa (job #3244929) | Cod sursa (job #2576262) | Cod sursa (job #3270512) | Cod sursa (job #2669598) | Cod sursa (job #1474602)
#include <iostream>
#include <cmath>
using namespace std;
#define LOGMAX 20
#define NMAX 250010
#define MMAX 300010
int d[NMAX][LOGMAX]; //d[i][j] = al 2^j -lea stramos al lui i
int N, M, P, Q;
int logN;
int main () {
freopen ("stramosi.in", "r", stdin);
freopen ("stramosi.out", "w", stdout);
cin >> N >> M;
for (int i = 1; i <= N; i++) {
cin >> d[i][0];
}
logN = (int) ceil (log (N) / log (2));
for (int j = 1; j <= logN; j++) {
for (int i = 1; i <= N; i++) {
d[i][j] = d[d[i][j - 1]][j - 1];
}
}
while (M--) {
cin >> P >> Q;
int x = 0;
while (Q) {
if (Q & 1) {
P = d[P][x];
}
x++;
Q >>= 1;
}
cout << P << '\n';
}
return 0;
}