Pagini recente » Cod sursa (job #1279502) | Cod sursa (job #3032600) | Cod sursa (job #22446) | Cod sursa (job #651166) | Cod sursa (job #1141948)
#include <fstream>
using namespace std;
fstream f("stramosi.in",ios::in);
fstream g("stramosi.out",ios::out);
const long nmax=250005;
long n,m,i,j,x[nmax],a[21][nmax],p,q;
void read()
{
f>>n>>m;
for (i=1;i<=n;i++) f>>x[i];
}
void ancestors()
{
for (j=1;j<=n;j++) a[0][j]=x[j];
for (i=1;i<=20;i++)
for (j=1;j<=n;j++)
a[i][j]=a[i-1][a[i-1][j]];
}
long lookforancestor(int nod,int p)
{
int k;
for (k=20;k>=0;k--)
if (p&(1<<k)) nod=a[k][nod];
return nod;
}
void solve()
{
for (i=1;i<=m;i++)
{
f>>q>>p;
g<<lookforancestor(q,p)<<'\n';
}
}
int main()
{
read();
ancestors();
solve();
f.close();g.close();
return 0;
}