Pagini recente » Cod sursa (job #2671793) | Cod sursa (job #224091) | Cod sursa (job #2306818) | Cod sursa (job #752533) | Cod sursa (job #712177)
Cod sursa(job #712177)
#include <fstream>
#include <vector>
using namespace std;
int euler[1000010],First[250010],r;
int rez,n,m;
vector<int>v[250010];
void dfs(int x)
{
euler[++r]=x;
if(!First[x]) First[x]=r;
for(int i=0;i<v[x].size();i++)
{
dfs(v[x][i]);
euler[++r]=x;
}
}
void query(int x,int p)
{
if(p==1)
{rez=euler[x-1]; return ;}
if(euler[x]==0) {rez=0; return; }
x=euler[x-1];
query(First[x],p-1);
}
int main()
{
int i,p,q,x;
ifstream fi("stramosi.in");
ofstream fo("stramosi.out");
fi>>n>>m;
for(i=1;i<=n;i++)
{
fi>>x;
v[x].push_back(i);
}
dfs(0);
for(i=1;i<=m;i++)
{
fi>>q>>p;
query(First[q],p);
fo<<rez<<"\n";
}
return 0;
}