Pagini recente » Cod sursa (job #2602381) | Cod sursa (job #2606100) | Cod sursa (job #2463686) | Cod sursa (job #2785908) | Cod sursa (job #2941222)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 250000;
ifstream fin( "stramosi.in" );
ofstream fout( "stramosi.out" );
int bl[18][NMAX+1];
int main() {
int n, m, i, x, step, put, node, pas;
fin >> n >> m;
for( i = 1; i <= n; i++ )
fin >> bl[0][i];
for( put = 1; ( 1 << put ) < n; put++ ) {
for( i = 1; i <= n; i++ ) {
if( bl[put-1][i] && bl[put-1][bl[put-1][i]] )
bl[put][i] = bl[put-1][bl[put-1][i]];
}
}
for( i = 0; i < m; i++ ) {
fin >> node >> x;
step = 17;
pas = 0;
while( step >= 0 ) {
if( pas + ( 1 << step ) <= x ) {
node = bl[step][node];
pas += ( 1 << step );
}
step--;
}
fout << node << "\n";
}
return 0;
}