Pagini recente » Cod sursa (job #2753060) | Cod sursa (job #873800) | Cod sursa (job #2241340) | Cod sursa (job #493376) | Cod sursa (job #2753548)
#include <iostream>
const int nMax = 250005;
int t[nMax][20], n, m, nod, k, curr;
using namespace std;
int main() {
// Input rapid
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> t[i][0];
}
for (int p = 1; (1 << p) <= n; p++) {
for (int i = 1; i <= n; i++) {
t[i][p] = t[t[i][p - 1]][p - 1];
}
}
for (int q = 1; q <= m; q++) {
cin >> nod >> k;
curr = nod;
int p = 0;
while (curr && k) {
if (k & 1) {
curr = t[curr][p];
}
p++;
k >>= 1;
}
cout << curr << "\n";
}
return 0;
}