Pagini recente » Cod sursa (job #1722562) | Cod sursa (job #1274211) | Cod sursa (job #2269408) | Cod sursa (job #1291309) | Cod sursa (job #2797410)
#include <stdio.h>
#define NMAX 250000
#define log2M 17
using namespace std;
int a[log2M + 1][NMAX + 5];
int stramosi(int x, int poz) {
int cnt;
cnt = 0;
while (poz > 0){
if (poz % 2 == 1)
x = a[cnt][x];
cnt ++;
poz /= 2;
}
return x;
}
int main(){
FILE *fin ,*fout;
fin = fopen ("stramosi.in","r");
fout = fopen ("stramosi.out", "w");
int n,m,x,y,i,j;
fscanf( fin ,"%d%d" ,&n, &m);
for (i = 1; i <= n; i++){
fscanf( fin ,"%d" ,&a[0][i]);
}
for ( i = 1; ( 1 << i ) <= n; i++)
for (j = 1; j <= n; j++)
a[i][j] = a[i - 1][a[i - 1][j]];
while (m --){
fscanf( fin, "%d", &x);
fscanf( fin, "%d", &y);
fprintf (fout ,"%d\n" ,stramosi(x, y));
}
return 0;
}