Pagini recente » Cod sursa (job #2378905) | Cod sursa (job #2146060) | Cod sursa (job #769250) | Cod sursa (job #2049193) | Cod sursa (job #477361)
Cod sursa(job #477361)
#include<cstdio>
int n,m,i,j,a[25][250005];
int main()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
scanf("%d",&a[0][i]);
int ok=1;
for(i=1;ok;++i)
{
ok=0;
for(j=1;j<=n;++j)
if(a[i-1][j])
{
a[i][j]=a[i-1][ a[i-1][j] ];
if(a[i][j]) ok=1;
}
}
for(j=1;j<=m;++j)
{
int p,q,step;
scanf("%d%d",&q,&p);
for(i=0,step=1;step<n;step<<=1,i++);
for(;step;step>>=1,--i)
{
if(step==p)
{
printf("%d\n",a[i][q]);
break;
}
else if(step<p)
{
p-=step;
q=a[i][q];
}
if(!q)
{
printf("0\n");
break;
}
}
}
fclose(stdin);
fclose(stdout);
return 0;
}