Pagini recente » Cod sursa (job #1912365) | Cod sursa (job #2545477) | Cod sursa (job #1099021) | Cod sursa (job #2694236) | Cod sursa (job #3133978)
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
const int N_MAX = 25e4;
const int LOG_MAX = 18;
int ancestor[LOG_MAX][N_MAX + 1]{};//ancestor[lg][i] = al 2^lg -lea stramos al lui i
int main() {
int n, querries;
fin >> n >> querries;
for(int i = 1; i <= n; ++i)
fin >> ancestor[0][i];
for(int lg = 1; (1 << lg) < n; ++lg)
for(int i = 1; i <= n; ++i)
ancestor[lg][i] = ancestor[lg - 1][ancestor[lg - 1][i]];
for(int querry = 0; querry < querries; ++querry){
int p, q;
fin >> p >> q;
for(int lg = LOG_MAX; lg >= 0; --lg)
if((1 << lg) & q){
p = ancestor[lg][p];
q ^= (1 << lg);
}
fout << p << '\n';
}
fin.close();
fout.close();
return 0;
}