Pagini recente » Cod sursa (job #1745260) | Cod sursa (job #2267422) | Cod sursa (job #1520923) | Cod sursa (job #2114116) | Cod sursa (job #3297604)
#include <iostream>
#include <fstream>
#include <vector>
std::ifstream fin("stramosi.in");
std::ofstream fout("stramosi.out");
int N,M,P,Q, up[250001][18];
int main(){
fin >> N >> M;
int log = 0;
while ( (1 << log) <= N){
log++;
}
for ( int i = 1; i <= N; i++ ){
fin >> up[i][0];
}
for ( int i = 1; i < log; i++ ){
for ( int node = 1; node <= N; node++ ){
up[node][i] = up[up[node][i-1]][i-1];
}
}
for ( int i = 0; i < M; i++ ){
fin >> Q >> P;
// for ( int j = 0; j < log; j++ ){
// if ( P & (1<<j) ){
// Q = up[Q][j];
// if ( Q == 0 ){
// break;
// }
// }
// }
// fout << Q << '\n';
int p = 0;
while(P){
if ( 1 & P ){
Q = up[Q][p];
}
P >>= 1;
p++;
}
}
return 0;
}