Pagini recente » Cod sursa (job #1855483) | Cod sursa (job #2796983) | Cod sursa (job #694644) | Cod sursa (job #1671498) | Cod sursa (job #833814)
Cod sursa(job #833814)
//#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
#define NMAX 250002
vector <int> v[NMAX];
int n,m,z,d[NMAX],bun;
bool viz[NMAX];
void init()
{
int i;n++;
for(i=1;i<n;i++)
{
d[i]=0; //sterge
viz[i]=false;
}
n--;
}
void read()
{
int i,a;
fin>>n>>m;
n++;
for(i=1;i<n;i++)
{
fin>>a;
if(a)
{
v[i].push_back(a);
viz[a]=true;
}
}
for(i=1;i<n;i++)
if(viz[i]==false)
{
z=i;
n--;
return;
}
n--;
}
void dfs(int nod)
{
if(d[nod]==bun)
{
fout<<nod<<"\n";
bun=-1;
return;
}
viz[nod]=true;
int i;
for(i=0;i<v[nod].size();i++)
{
if(viz[v[nod][i]]==false)
{
d[v[nod][i]] = d[nod]+1;
dfs(v[nod][i]);
}
}
}
void solve()
{
int a,i;
for(i=0;i<m;i++)
{
fin>>a>>bun;
init();
d[a]=0;
dfs(a);
if(bun!=-1) fout<<"0\n";
}
}
int main()
{
read();
solve();
}