Pagini recente » Cod sursa (job #2824186) | Cod sursa (job #1862464) | Cod sursa (job #1941262) | Cod sursa (job #942105) | Cod sursa (job #1348412)
#include <iostream>
#include <fstream>
#define Nmax 250001
#define Logmax 21
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n,T[Logmax][Nmax];
int log[Nmax];
void BuildLog()
{
int i;
for(i=2;i<=Nmax;i++)
log[i]=log[i/2]+1;
}
void Stramos()
{
int i,j;
for(i=1;i<=log[n];i++)
for(j=1;j<=n;j++)
T[i][j]=T[i-1][T[i-1][j]];
}
void FindAncestor(int p,int q)
{
while(q>0)
{
p=T[log[q]][p];
q=q-(1<<log[q]);
}
fout<<p<<"\n";
}
void read()
{
int m;
fin>>n>>m;
int i,p,q;
for(i=1;i<=n;i++)
fin>>T[0][i];
BuildLog();
Stramos();
for(i=1;i<=m;i++)
{
fin>>p>>q;
FindAncestor(p,q);
}
}
int main()
{
read();
return 0;
}