Pagini recente » Cod sursa (job #781764) | Cod sursa (job #2479845) | Cod sursa (job #1825517) | Cod sursa (job #1128448) | Cod sursa (job #3124932)
//
// Created by gfa on 4/28/23.
//
#include <bits/stdc++.h>
std::ifstream fin("stramosi.in");
std::ofstream fout("stramosi.out");
int d[250005][50];
int search(int x, int y){
int h = y, node = x, temp;
while(h > 0){
temp = (int)log2(h);
node = d[node][temp];
if(node == 0)
return 0;
h -= std::pow(2, temp);
}
return node;
}
int main(){
int n, k;
fin >> n >> k;
fin >> d[1][0];
for(int i = 2; i <= n; ++i) {
fin >> d[i][0];
for(int j = 1; ; ++j) {
d[i][j] = d[d[i][j-1]][j-1];
if(d[i][j] == 0)
break;
}
}
int x, y;
for(int queries = 1; queries < k; ++queries) {
fin >> x >> y;
fout << search(x, y) << '\n';
}
fin >> x >> y;
fout << search(x, y);
}