Pagini recente » Cod sursa (job #2666108) | Cod sursa (job #2281722) | Cod sursa (job #2892903) | Cod sursa (job #985471) | Cod sursa (job #1803816)
#include <bits/stdc++.h>
using namespace std;
#define dbg(x) (cout<<#x<<" = "<<(x)<<'\n')
typedef long long int lld;
const int INF = (1LL << 30) - 1;
const lld LINF = (1LL << 62) - 1;
const int NMAX = 250000;
const int LMAX = 18;
int N, M;
int dad[LMAX + 1][NMAX + 5];
vector<int> V[NMAX + 5];
int query(int x, int p) {
int sol = x;
for (int i = 0; i < LMAX; ++i) {
if (p & (1 << i)) {
sol = dad[i][sol];
}
}
return sol;
}
int main() {
cin.sync_with_stdio(false);
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
cin >> N >> M;
for (int i = 1, x; i <= N; ++i) {
cin >> x;
dad[0][i] = x;
}
for (int k = 1; k < 18; ++k) {
for (int i = 1; i <= N; ++i) {
dad[k][i] = dad[k - 1][dad[k - 1][i]];
}
}
while (M--) {
int x, p;
cin >> x >> p;
cout << query(x, p) << '\n';
}
return 0;
}