Pagini recente » Cod sursa (job #1004825) | Cod sursa (job #1459987) | Cod sursa (job #1573075) | Cod sursa (job #1336060) | Cod sursa (job #3003231)
#include <bits/stdc++.h>
using namespace std;
int n, q;
int t[250001][19];
int query(int nod, int k) {
for (int h = log2(n+1); h >= 0; h--) {
if ((k & (1 << h))) {
nod = t[nod][h];
}
}
return nod;
}
int main() {
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> t[i][0];
}
for (int h = 1; h <= log2(n+1); h++) {
for (int i = 1; i <= n; i++) {
t[i][h] = t[t[i][h - 1]][h - 1];
}
}
while (q--) {
int nod, k;
cin >> nod >> k;
cout << query(nod, k) << '\n';
}
return 0;
}