Pagini recente » Cod sursa (job #1818041) | Cod sursa (job #1692823) | Cod sursa (job #620425) | Cod sursa (job #542651) | Cod sursa (job #2603390)
#include <bits/stdc++.h>
#define NM 250005
using namespace std;
int n, Q, t[NM][20];
void build()
{
for(int i=1; i<=18; i++)
{
for(int nod=1; nod<=n; nod++)
t[nod][i] = t[t[nod][i-1]][i-1];
}
}
FILE* fin;
FILE* fout;
int main()
{
fin = fopen("stramosi.in", "r");
fout = fopen("stramosi.out", "w");
fscanf(fin, "%d%d", &n, &Q);
for(int i=1; i<=n; i++)
fscanf(fin, "%d", &t[i][0]);
build();
while(Q--)
{
int x, c;
fscanf(fin, "%d%d", &x, &c);
if(c > n)
fprintf(fout, "0\n");
else
{
int p = 0;
while(c)
{
if(c%2)
x = t[x][p];
c/=2;
p++;
}
fprintf(fout, "%d\n", x);
}
}
return 0;
}