Pagini recente » Cod sursa (job #2035639) | Cod sursa (job #165114) | Cod sursa (job #1666429) | Cod sursa (job #1008442) | Cod sursa (job #2433876)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ( "stramosi.in" );
ofstream fout ( "stramosi.out" );
int n, m, q;
int a[250010][30];
int nod, ord;
int main() {
FILE* in = fopen ( "stramosi.in", "r" );
FILE* out = fopen ( "stramosi.out", "w" );
fscanf ( in, "%i%i", &n, &q );
for ( int i = 1; i <= n; i++ )
fscanf ( in, "%i", &a[i][0] );
for ( int cat = 1; ( 1 << cat ) <= n; cat++ )
for ( int i = 1; i <= n; i++ )
a[i][cat] = a[a[i][cat - 1]][cat - 1];
for ( int t = 1; t <= q; t++ ) {
fscanf ( in, "%i%i", &nod, &ord );
int anc = nod;
for ( int cat = 20; cat >= 0; cat-- )
if ( ( 1 << cat ) & ord )
anc = a[anc][cat];
fprintf ( out, "%d", anc );
fprintf ( out, "\n" );
}
return 0;
}