Pagini recente » Cod sursa (job #280519) | Cod sursa (job #2237520) | Cod sursa (job #266882) | Cod sursa (job #2619572) | Cod sursa (job #3220188)
#include <stdio.h>
#define MAXN 250000
#define LOG 18
int par[LOG][MAXN + 1];
int main(){
FILE *fin, *fout;
int n, q, i, node, p, j;
fin = fopen( "stramosi.in", "r" );
fscanf(fin, "%d%d", &n, &q);
for( i = 1; i <= n; i++ )
fscanf(fin, "%d", &par[0][i]);
for( p = 1; p <= LOG; p++ )
for( i = 1; i <= n; i++ )
par[p][i] = par[p - 1][par[p - 1][i]];
fout = fopen( "stramosi.out", "w" );
for( i = 0; i < q; i++ ){
fscanf( fin, "%d%d", &node, &p);
for( j = 0; j <= LOG; j++ ){
if( p & (1 << j) )
node = par[j][node];
}
fprintf(fout, "%d\n", node);
}
fclose( fin );
fclose( fout );
return 0;
}