Pagini recente » Cod sursa (job #1495623) | Cod sursa (job #2304468) | Cod sursa (job #936920) | Cod sursa (job #2643664) | Cod sursa (job #937672)
Cod sursa(job #937672)
#include <fstream>
#define In "stramosi.in"
#define Out "stramosi.out"
#define Nmax 250002
using namespace std;
int stramos[20][Nmax];
//stramos[i][j]=al 2^i-lea stramos a lui j
int n;
inline void Calcul()
{
int i,j;
for(i=1;(1<<i)<=n;i++)
for(j=1;j<=n;j++)
stramos[i][j] = stramos[i-1][stramos[i-1][j]];
}
int main()
{
int i,p,q,k;
ifstream fin(In);
ofstream fout(Out);
fin>>n>>k;
for(i=1;i<=n;i++)
fin>>stramos[0][i];
Calcul();
while(k--)
{
fin>>q>>p;
while(p&&q)
{
for(i=0;(1<<i)<=p;i++);
i--;
q = stramos[i][q];
p-=(1<<i);
}
fout<<q<<"\n";
}
fin.close();
fout.close();
return 0;
}