Pagini recente » Cod sursa (job #170531) | Cod sursa (job #1984493) | Cod sursa (job #2081133) | Cod sursa (job #1385170) | Cod sursa (job #113524)
Cod sursa(job #113524)
#include <iostream>
#include <cstdio>
using namespace std;
int stra[18][250006],i,j,n,m,a,b,continua;
int main()
{ FILE *fin=fopen("stramosi.in","r"),*fout=fopen("stramosi.out","w");
fscanf(fin,"%d %d",&n,&m);for(i=1;i<=n;fscanf(fin,"%d",&stra[0][i++]));
for(j=1;1<<j <=n;j++/*,cout<<endl*/)for(i=1,continua=0;i<=n;i++)
{ stra[j][i]=stra[j-1][stra[j-1][i]];
// cout<<stra[j][i]<<" ";
if(stra[j][i]>0) continua=1;
if(i==n&& !continua) j=20;
}
for(;m>0;m--)
{ fscanf(fin,"%d %d",&b,&a);
for(i=0;1<<i <=a;i++)if((a>>i)&1) b=stra[i][b];
fprintf(fout,"%d\n",b);
}
fclose(fin);fclose(fout);
return 0;
}