Pagini recente » Cod sursa (job #1196531) | Cod sursa (job #1395912) | Cod sursa (job #1076313) | Cod sursa (job #1898906) | Cod sursa (job #634617)
Cod sursa(job #634617)
#include <fstream>
using namespace std;
#define NMAX 250005
#define LgMax 19
int A[20][NMAX];
int N;
void computeA()
{
int i, j;
for (i = 1; i <= LgMax; ++i)
for (j = 1; j <= N; ++j)
A[i][j] = A[i-1][A[i-1][j]];
}
int find(int x, int k)
{
for (int i = 0; i<=LgMax; ++i)
if ((k >> i) & 1)
x = A[i][x];
return x;
}
int main()
{
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int M, i, x, k;
fin >> N >> M;
for (i=1; i<=N; ++i)
fin >> A[0][i];
computeA();
for ( ; M>0; --M) {
fin >> x >> k;
fout << find(x, k) << "\n";
}
return 0;
}