Pagini recente » Cod sursa (job #1749206) | Cod sursa (job #722034) | Cod sursa (job #672679) | Cod sursa (job #2000115) | Cod sursa (job #1636129)
#include <fstream>
#include <vector>
#include <algorithm>
#define NMax 250005
#define LogMaxN 18
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
vector <int> G[NMax];
int ancestor[LogMaxN][NMax], n, q;
bool used[NMax];
int main() {
cin >> n >> q;
for(int i = 1; i <= n; ++i) {
cin >> ancestor[0][i];
}
for(int i = 1; i < LogMaxN; ++i) {
for(int j = 1; j <= n; ++j) {
ancestor[i][j] = ancestor[i - 1][ancestor[i - 1][j]];
}
}
for(int i = 1; i <= q; ++i) {
int node, val;
cin >> node >> val;
for(int i = 0; i < LogMaxN; ++i) {
if(val & (1 << i)) {
node = ancestor[i][node];
}
}
cout << node << '\n';
}
return 0;
}