Cod sursa(job #301028)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 7 aprilie 2009 21:00:26
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
# include <stdio.h>
int b[100005],c[100005],v[100005],pr,ul,i,n,m,s,x,y;
struct nod
{
int info;
nod *urm;
}*a[100005],*p;

int main ()
{
freopen ("bfs.in","r",stdin);
freopen ("bfs.out","w",stdout);
scanf ("%i%i%i",&n,&m,&s);
for (i=1;i<=m;i++)
{
scanf ("%i%i",&x,&y);
p=new nod;
p->info=y;
p->urm=a[x];
a[x]=p;

}
pr=1;
ul=1;
c[1]=s;
v[s]=1;
while (pr<=ul)
{
p=a[c[pr]];
while (p)
{

if (v[p->info]==0)
{
ul++;
c[ul]=p->info;
v[p->info]=1;
b[p->info]=b[c[pr]]+1;
}
p=p->urm;
}
pr++;
}
for (i=1;i<=n;i++)
if (i==s)
printf ("0 ");
else
if (b[i]==0)
printf ("-1 ");
else
printf ("%i ",b[i]);

return 0;
}