Pagini recente » Cod sursa (job #431307) | Cod sursa (job #1945107) | Cod sursa (job #1680061) | Cod sursa (job #379795) | Cod sursa (job #260967)
Cod sursa(job #260967)
#include<fstream.h>
ifstream f("stramosi.in");
ofstream g("stramosi.out");
const long Nmax=250010;
struct elem
{
int inf;
elem *urm;
}*a[Nmax];
struct cer
{
int inf,nr;
cer *urm;
}*c[300010];
long n,m,t[Nmax],nv[Nmax],sol[100],viz[Nmax];
void citire()
{
long i;
long x,y;
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>x;
t[i]=x;
elem *p=new elem;
p->inf=i;
p->urm=a[x];
a[x]=p;
}
for(i=1;i<=m;i++)
{
f>>x>>y;
cer *q=new cer;
q->inf=y;
q->nr=i;
q->urm=c[x];
c[x]=q;
}
}
void afisare()
{
for(long i=1;i<=m;i++)
g<<sol[i]<<'\n';
}
void parcurg(int niv,int vf)
{
nv[niv]=vf;
viz[vf]=1;
for(cer *q=c[vf];q;q=q->urm)
{
sol[q->nr]=nv[niv-q->inf];
}
for(elem *p=a[vf];p;p=p->urm)
parcurg(niv+1,p->inf);
viz[vf]=0;
}
int main()
{
citire();
for(long i=1;i<=n;i++)
if(t[i]==0)
parcurg(0,i);
afisare();
g.close();
return 0;
}