Pagini recente » Cod sursa (job #3360344) | Cod sursa (job #3360361) | Cod sursa (job #3360382) | Cod sursa (job #3360353) | Cod sursa (job #3360345)
#include <iostream>
#include <fstream>
#include <fstream>
using namespace std;
const int N=25e4+4,M=20;
int t[N];
int n,q;
int stramos[N][M];
void calc_stramos()
{
for(int i(1); i<=n; i++)
stramos[i][0]=t[i];
for(int p(1); p<M; p++)
for(int i(1); i<=n; i++)
stramos[i][p]=stramos[stramos[i][p-1]][p-1];
}
int get_stramos(int nod,int al_catelea)
{
for(int p(0); p<M; p++)
if(al_catelea&(1<<p))
nod=stramos[nod][p];
return nod;
}
int main()
{
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
fin>>n>>q;
int i,j;
for(i=1; i<=n; i++)fin>>t[i];
calc_stramos();
while(q--)
{
fin>>i>>j;
fout<<get_stramos(i,j)<<'\n';
}
return 0;
}