Pagini recente » Cod sursa (job #2603768) | Cod sursa (job #3268203) | Cod sursa (job #3245133) | Cod sursa (job #3281500) | Cod sursa (job #3241124)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
const int nmax = 25e4+10;
const int LOG = 20;
vector<vector<int>> up(LOG+1,vector<int> (nmax,0));
int n,m;
void read_input(){
fin >> n >> m;
for(int i = 1; i <=n; i++){
fin >> up[0][i];
};
for(int i = 1; i <=LOG; i++){
for(int j = 1; j <=n; j++){
up[i][j] = up[i-1][up[i-1][j]];
}
}
};
int solve_query(int nod,int k){
for(int i = 0; i <=LOG; i++){
if(k & (1 << i)){
nod = up[i][nod];
}
};
return nod;
}
int main(){
read_input();
int q,p;
for(int i = 1; i <=m; i++){
fin >> q >> p;
fout << solve_query(q,p) << '\n';
};
return 0;
}