Pagini recente » Cod sursa (job #543632) | Cod sursa (job #1336373) | Cod sursa (job #1657906) | Cod sursa (job #2981755) | Cod sursa (job #3247198)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
const int N = 250005;
int n, m, x;
int q, p;
int str[25][N]; // str[i][nod]= al 2^i-lea stramos al lui nod
// str[k][nod]=str[k-1][ str[k-1][nod] ]
//int t[N]; // t[i]=tatal lui i
int stramosk(int nod, int k)
{
for (int i = 0; i < 20; ++i)
{
if (k & (1 << i))
nod = str[i][nod];
}
return nod;
}
int main()
{
fin >> n >> m;
for (int i = 1; i <= n; i++)
{
fin >> x;
//t[i] = x;
str[0][i] = x;
}
for (int i = 1; i <= 20; i++)
for (int j = 1; j <= n; j++)
str[i][j] = str[i - 1][str[i - 1][j]];
for (int j = 1; j <= m; j++)
{
fin >> q >> p;
/*int ans;
for (int i = 1; i <= p; i++)
{
ans = t[q];
q = t[q];
}
fout << ans << '\n';*/
fout << stramosk(q, p) << '\n';
}
return 0;
}