Pagini recente » Cod sursa (job #1400574) | Cod sursa (job #2614293) | Cod sursa (job #88410) | Cod sursa (job #1171604) | Cod sursa (job #483636)
Cod sursa(job #483636)
#include<cstdio>
#define NMAX 250005
#define in freopen("stramosi.in","r",stdin)
#define out freopen("stramosi.out","w",stdout)
using namespace std;
long n,a[32][NMAX],t[NMAX],m,w,p;
long str(long k)
{ if(p<w&&t[k]>0)
{++p;
return str(t[k]);
}
else
if(p==w)
return k;
else
if(t[k]==0)
return 0;
}
int main()
{in;
out;
long P,q,i,j;
scanf("%ld %ld",&n,&m);
for(i=1;i<=n;++i)
scanf("%ld",&t[i]);
for(i=1;i<=n;++i)
a[0][i]=t[i];
w=1;
for(i=1;i<=30;++i)
for(j=1;j<=n;++j)
a[i][j]=a[i-1][a[i-1][j]];
for(j=1;j<=m;++j)
{scanf("%ld %ld",&q,&P);
p=P;
while(p)
{w=1;
i=0;
while(w<=p){++i;w*=2;}
w/=2;
p=p-w;
--i;
q=a[i][q];
}
printf("%ld\n",q);
}
fclose(stdin);
fclose(stdout);
return 0;
}