Pagini recente » Cod sursa (job #556224) | Cod sursa (job #1364791) | Cod sursa (job #334126) | Cod sursa (job #649216) | Cod sursa (job #409881)
Cod sursa(job #409881)
# include <stdio.h>
# include <mem.h>
long n,m,s;
struct nod { nod * urm;
long info;
};
nod *v[100005];
long q[100005],viz[100005];
void read()
{ long x,y,i;
nod *p;
for (i=1;i<=m;i++)
{scanf ("%ld%ld",&x,&y);
p=new nod;
p->info=y;
p->urm=v[x];
v[x]=p;
}
}
void bfs()
{ long inc,sf,x;
inc=sf=1;
nod *p;
viz[s]=0;
q[1]=s;
while (inc<=sf)
{ p=v[q[inc]];
while (p)
{ if (viz[p->info]==-1)
{sf++;
q[sf]=p->info;
viz[p->info]=viz[q[inc]]+1;
}
p=p->urm;
}
inc++;
}
}
void afisare()
{ long i;
for (i=1;i<=n;i++)
printf ("%ld ",viz[i]);
}
int main()
{ freopen ("bfs.in","r",stdin);
freopen ("bfs.out","w",stdout);
long i,j;
scanf ("%ld %ld %ld",&n,&m,&s);
read();
memset(viz,-1,sizeof(viz));
bfs ();
afisare();
return 0;
}