Pagini recente » Cod sursa (job #2309692) | Cod sursa (job #2813576) | Cod sursa (job #2268713) | Cod sursa (job #1057577) | Cod sursa (job #2926704)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
vector <int> v[250011];
int d[250011][19];
void dfs(int k)
{
int n=1;
do
{
n++;
d[k][n]=d[d[k][n-1]][n-1];
}while(d[k][n]);
for(int i=0;i<v[k].size();i++)
dfs(v[k][i]);
}
int n,m,x,y,p,l,i;
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>x;
d[i][1]=x;
v[x].push_back(i);
}
dfs(0);
for(i=1;i<=m;i++)
{
f>>x>>y;
p=x;
l=1;
while(y)
{
if(y%2==1)
p=d[p][l];
l++;
y=y/2;
}
g<<p<<'\n';
}
return 0;
}