Pagini recente » Cod sursa (job #2847073) | Cod sursa (job #2898101) | Cod sursa (job #2794191) | Cod sursa (job #1767662) | Cod sursa (job #194475)
Cod sursa(job #194475)
#include<stdio.h>
#define N 250005
long n,m,s[N][18],a[N],p,q,l;
int main(){
int i,j;
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%ld%ld",&n,&m);
a[1]=0;
scanf("%ld",&s[1][0]);
for (i=2;i<=n;i++){
a[i]=a[i/2]+1;
scanf("%ld",&s[i][0]);
}
for(i=1;i<=n;i++)
for(j=1;j<=a[n];j++){
if(!s[s[i][j-1]][j-1])
break;
s[i][j]=s[s[i][j-1]][j-1];
}
for (i=0;i<m;i++){
scanf("%ld %ld\n",&q,&p);
while (p){
l=s[q][a[p]];
p-=(1<<a[p]);
q=l;
}
printf("%ld\n",l);
}
fclose(stdin);
fclose(stdout);
return 0;
}