Pagini recente » Cod sursa (job #1627148) | Cod sursa (job #14571) | Cod sursa (job #1568607) | Cod sursa (job #31941) | Cod sursa (job #4082)
Cod sursa(job #4082)
#include<stdio.h>
#define N 250001
#define M 300001
#define L 18
int n,m,a[N][L];
int stra(int q,int p){
int x=q,r,j=0;
while(p){
r=p&1;
if(r)
x=a[x][j];
j++;
p>>=1;
}
return x;
}
int main(){
FILE *in=fopen("stramosi.in","r"),*out=fopen("stramosi.out","w");
int i,j,p,q;
fscanf(in,"%d%d",&n,&m);
for(i=1;i<=n;i++)
fscanf(in,"%d",&a[i][0]);
for(j=1;j<L;j++)
for(i=1;i<=n;i++)
a[i][j]=a[a[i][j-1]][j-1];
for(;m;m--){
fscanf(in,"%d%d",&q,&p);
fprintf(out,"%d\n",stra(q,p));
}
fclose(in);
fclose(out);
return 0;
}