Pagini recente » Cod sursa (job #1060605) | Cod sursa (job #2194376) | Cod sursa (job #566399) | Cod sursa (job #1495082) | Cod sursa (job #1439185)
#include <iostream>
#include <fstream>
using namespace std;
int v[19][250005]; //v[i][j] = al 2^i-lea stramos al lui j
int str(int q, int p)
{
for(int i = 20; i > -1; --i)
if(p & (1 << i))
q = v[i][q];
return q;
}
int main()
{
int N, M, Q, P, i;
freopen("stramosi.in", "r", stdin);
scanf("%d%d", &N, &M);
for(i = 1; i <= N; ++i)
scanf("%d", &v[0][i]);
int p = 0, put = 1;
while (put <= N)
{
put = put * 2;
++ p;
}
--p;
for(int j = 1; j <= p; ++j)
for(i = 1; i <= N; ++i)
v[j][i] = v[j-1][v[j-1][i]];
freopen("stramosi.out", "w", stdout);
for(i = 0; i < M; ++i)
{
scanf("%d%d", &Q, &P);
printf("%d\n", str(Q,P));
}
return 0;
}