Pagini recente » Cod sursa (job #1074791) | Cod sursa (job #2362218) | Cod sursa (job #1046779) | Arhiva de probleme | Cod sursa (job #3220189)
#include <stdio.h>
#define MAXN 250000
#define LOG 19
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;
}