Pagini recente » Cod sursa (job #816580) | Cod sursa (job #2722201) | Cod sursa (job #1408136) | Cod sursa (job #2141030) | Cod sursa (job #1041683)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int p, n, x, v[250003], m, e, s[20][250003], lvl[250003];
int main()
{
f>>n>>m;
for(int i=1; i<=n; ++i)
f>>v[i], lvl[i]=lvl[v[i]]+1;
for(int i=1; i<=n; ++i){
s[0][i]=v[i];
for(p=1; (1<<p)<=lvl[i]; p++){
s[p][i]=s[p-1][s[p-1][i]];
}
}
while(m--){
f>>x>>p;
e=18;
while(p){
if((1<<e)<=p){
x=s[e][x];
p-=(1<<e);
}
e--;
}
g<<x<<'\n';
}
return 0;
}