Pagini recente » Cod sursa (job #1779202) | Cod sursa (job #934905) | Cod sursa (job #290669) | Cod sursa (job #1217556) | Cod sursa (job #2862086)
#include <iostream>
#define NMAX 250003
#define LOG 18
using namespace std;
int N, M;
int Fathers[NMAX];
int up[NMAX][LOG];
int main()
{
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
cin >> N >> M;
for(int i = 1; i <= N; i++) {
int f;
cin >> f;
Fathers[i] = f;
}
for(int i = 1; i <= N; i++) {
up[i][0] = Fathers[i];
}
for(int j = 1; j < LOG; j++) {
for(int i = 1; i <= N; i++) {
up[i][j] = up[up[i][j - 1]][j - 1];
}
}
for(int i = 1; i <= M; i++) {
int nod, nr;
cin >> nod >> nr;
for(int j = 0; j < LOG; j++) {
if(nr & (1 << j)) {
nod = up[nod][j];
}
}
cout << nod << endl;
}
return 0;
}