Pagini recente » Cod sursa (job #2275453) | Cod sursa (job #2381949) | Cod sursa (job #1268030) | Cod sursa (job #2987772) | Cod sursa (job #2596669)
#include <bits/stdc++.h>
#define Nmax 250005
#define LG 20
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int N, Q, L, root;
int anc[Nmax][LG];
int solve(int x, int y) {
for (int i = L; i >= 0; --i)
if ((1 << i) & y) x = anc[x][i];
return x;
}
int main()
{
f >> N >> Q;
L = ceil(log2(N));
for (int i = 1; i <= N; ++i)
f >> anc[i][0];
for (int j = 1; j <= L; ++j)
for (int i = 1; i <= N; ++i)
anc[i][j] = anc[anc[i][j - 1]][j - 1];
while (Q--) {
int x, y;
f >> x >> y;
g << solve(x, y) << '\n';
}
return 0;
}