Pagini recente » Cod sursa (job #2443133) | Cod sursa (job #2550769) | Cod sursa (job #799091) | Cod sursa (job #234050) | Cod sursa (job #660918)
Cod sursa(job #660918)
#include <fstream>
#include <vector>
using namespace std;
#define DIM 250001
ifstream fi ("stramosi.in");
ofstream fo ("stramosi.out");
int N, M, P, Q;
int S[DIM][20];
void cit ()
{
fi >> N >> M;
for (int i = 1, x; i <= N; i++)
{
fi >> S[i][0];
}
}
void prep ()
{
int i, j;
for (j = 1; j < 18; j++)
{
for (i = 1; i <= N; i++)
{
if (S[i][j-1] == 0)
continue;
S[i][j] = S[S[i][j-1]][j-1];
}
}
}
void calc ()
{
for (int r = 17; r >= 0 && Q != 0; r--)
{
if (P >> r & 1)
{
Q = S[Q][r];
}
}
}
int main ()
{
cit ();
prep ();
while (M--)
{
fi >> Q >> P;
calc ();
fo << Q << '\n';
}
return 0;
}