Pagini recente » Cod sursa (job #1670391) | Monitorul de evaluare | Cod sursa (job #3327681) | Cod sursa (job #990516) | Cod sursa (job #3333084)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
#define cin fin
#define cout fout
int parent[250001][20];
int n,q;
int jump(int a, int d) {
for(int i = 0; i < 20; i++) {
if (d&(1<<i)) {
a=parent[a][i];
}
}
return a;
}
int main() {
cin >> n >> q;
for(int i = 1; i<= n; i++) {
cin >> parent[i][0];
}
for(int d=1; d < 20; d++) {
for(int i = 1; i <= n; i++) {
parent[i][d]=parent[parent[i][d-1]][d-1];
}
}
while(q--) {
int x, y;
cin >> x >> y;
cout << jump(x, y) << "\n";
}
return 0;
}