Pagini recente » Cod sursa (job #68910) | Cod sursa (job #1926942) | Cod sursa (job #3215795) | Cod sursa (job #1600333) | Cod sursa (job #1803817)
#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) {
for (int i = 0; i < LMAX && x; ++i) {
if (p & (1 << i)) {
x = dad[i][x];
}
}
return x;
}
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;
}