Pagini recente » Cod sursa (job #2380677) | Cod sursa (job #676501) | Cod sursa (job #1539710) | Cod sursa (job #2432417) | Cod sursa (job #964253)
Cod sursa(job #964253)
#include <cstdio>
#include <cstdlib>
using namespace std;
#define Nmax 250010
int Anc[20][Nmax], N, M, Node, P;
int main()
{
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
scanf("%i %i", &N, &M);
for(int i = 1; i <= N; ++ i) scanf("%i", &Anc[0][i]);
for(int i = 1; (1 << i) <= N; ++ i)
for(int j = 1; j <= N; ++ j)
Anc[i][j] = Anc[i - 1][Anc[i - 1][j]];
for(int i = 1; i <= M; ++ i)
{
scanf("%i %i", &Node, &P);
for(int j = 0; j < 20; ++ j)
if(P & (1 << j))
Node = Anc[j][Node];
printf("%i\n", Node);
}
return 0;
}