Cod sursa(job #3297610)
Utilizator | Data | 22 mai 2025 23:53:25 | |
---|---|---|---|
Problema | Stramosi | Scor | 90 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.65 kb |
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int N,M,P,Q, up[250001][18];
int main(){
fin >> N >> M;
for ( int i = 1; i <= N; i++ ){
fin >> up[i][0];
}
for ( int i = 1; i < 18; i++ ){
for ( int node = 1; node <= N; node++ ){
up[node][i] = up[up[node][i-1]][i-1];
}
}
while(M--){
fin >> Q >> P;
int p = 0;
while(P){
if ( 1 & P ){
Q = up[Q][p];
}
P >>= 1;
p++;
}
fout << Q << '\n';
}
return 0;
}