Pagini recente » Cod sursa (job #2889275) | Cod sursa (job #2770157) | Cod sursa (job #1493965) | Cod sursa (job #2116991) | Cod sursa (job #1477770)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxN 250002
#define maxA 19
using namespace std;
int n, m, i, j, anc[maxN][maxA], p, q;
void read()
{
freopen("stramosi.in", "r", stdin);
scanf("%d %d", &n, &m);
for (i = 1; i <= n; ++ i)
{
scanf("%d", &anc[i][0]);
for (j = 1; 1 << j <= i; ++ j)
anc[i][j] = anc[anc[i][j - 1]][j - 1];
}
}
void print()
{
int p, q;
freopen("stramosi.out", "w", stdout);
while (m --)
{
scanf("%d %d", &q, &p);
for (i = 0; 1 << i <= p; ++ i)
if (p & (1 << i))
{
q = anc[q][i];
if (q == 0)
break;
}
printf("%d\n", q);
}
}
int main()
{
read();
print();
return 0;
}