Pagini recente » Cod sursa (job #796953) | Cod sursa (job #674053) | Cod sursa (job #2085077) | Cod sursa (job #130338) | Cod sursa (job #2172141)
#include <fstream>
#include <vector>
#define nmax 250001
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
vector<int> rad;
vector<int> G[nmax];
vector<int> arb;
int n,m,q,p,gasit;
void dfs(int nod)
{
if(nod==q)
{
gasit=1;
if(arb.size()<p)
{
fout<<0<<'\n';
return;
}
fout<<arb[arb.size()-p]<<'\n';
return;
}
arb.push_back(nod);
for(int i=0;i<G[nod].size();i++)
dfs(G[nod][i]);
arb.pop_back();
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
{
int a;
fin>>a;
G[a].push_back(i);
if(a==0)
rad.push_back(i);
}
for(int i=1;i<=m;i++)
{
fin>>q>>p;
gasit=0;
for(int j=0;j<rad.size();j++)
{
if(q==rad[j])
fout<<0<<'\n';
else
dfs(rad[j]);
if(gasit==1)
break;
}
}
return 0;
}