Pagini recente » Cod sursa (job #465704) | Cod sursa (job #2581634) | Cod sursa (job #3232294) | Cod sursa (job #1231148) | Cod sursa (job #980429)
Cod sursa(job #980429)
#include<stdio.h>
#include<vector>
#define NMAX 250000
using namespace std;
int d[20][NMAX+5];
int cauta (int v, int cnt) {
int i;
for(i=0; (1<<i) <= cnt; i++);
i--;
if((1<<i)!=cnt)
return cauta(d[i][v],cnt-(1<<i));
return d[i][v];
}
int main() {
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
int n,m,p,q,j,i;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
scanf("%d",&d[0][i]);
for(j=1; (1<<j) <=n ; j++)
for(i=1;i<=n;i++)
d[j][i]=d[j-1][d[j-1][i]];
while(m) {
--m;
scanf("%d%d",&q,&p);
printf("%d\n",cauta(q,p));
}
return 0;
}