Pagini recente » Cod sursa (job #3185932) | Cod sursa (job #963381) | Cod sursa (job #1965094) | Cod sursa (job #2966898) | Cod sursa (job #1909901)
#include<stdio.h>
int stramos[19][250001],n,m;
void construire(){
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 answer ( int p , int q){
int i;
for(i=0;(1<<i)<=p;i++)
if(((1<<i)&p)!=0)
q=stramos[i][q];
return q;
}
int main(){
int i,ans,p,q;
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d%d",&n,&m);
// stramos[i][j]= al 2^i-lea stramos a lui j
for(i=1;i<=n;i++)
scanf("%d",&stramos[0][i]);
construire();
for(i=1;i<=m;i++){
scanf("%d%d",&q,&p);
ans=answer(p,q);
printf("%d\n",ans);
}
return 0;
}