Pagini recente » Cod sursa (job #3292930) | Cod sursa (job #2755909) | Cod sursa (job #143203) | Cod sursa (job #232172) | Cod sursa (job #2596668)
#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) {
int mid = anc[i][j - 1];
anc[i][j] = anc[mid][j - 1];
}
while (Q--) {
int x, y;
f >> x >> y;
g << solve(x, y) << '\n';
}
return 0;
}