Pagini recente » Cod sursa (job #3317480) | Cod sursa (job #3312810) | Cod sursa (job #3317517) | Cod sursa (job #3312706) | Cod sursa (job #3327468)
#include <bits/stdc++.h>
#define NMAX 250002
#define LOGMAX 18
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int N,Q;
int sparse[NMAX][LOGMAX + 2];
int go_up(int node,int steps)
{
int lg = 0;
while(steps > 0){
if(steps&1){
node = sparse[node][lg];
}
lg ++;
steps >>= 1;
}
return node;
}
int main()
{
fin >> N >> Q;
for(int i=1;i<=N;i++){
fin >> sparse[i][0];
}
for(int lg = 1;lg <=LOGMAX ; lg++){
for(int i= N;i>=1;i--){
sparse[i][lg] = sparse[sparse[i][lg-1]][lg-1];
}
}
while(Q--){
int node,steps;
fin >> node >> steps;
fout << go_up(node,steps) << "\n";
}
}