Pagini recente » Cod sursa (job #2063371) | Cod sursa (job #1221316) | Cod sursa (job #586933) | Cod sursa (job #250648) | Cod sursa (job #343012)
Cod sursa(job #343012)
#include <stdio.h>
#define DIM 1005
struct Nod{
int x;
Nod *adr;
};
Nod *Lst[DIM];
int coada[DIM/10], vizitat[DIM/10], cost[DIM/10];
int i,j,n,m,pi,ps,s,x,y;
void add(int a, int b)
{
Nod *p;
p=new Nod;
p->x=b;
p->adr=Lst[a];
Lst[a]=p;
}
void bf()
{
Nod *p;
vizitat[s]=1;
pi=ps=1;
coada[pi]=s;
while (pi<=ps)
{
p=Lst[coada[pi]];
while(p)
{
if (!vizitat[p->x])
{
vizitat[p->x]=1;
coada[++ps]=p->x;
cost[p->x]=cost[coada[pi]]+1;
}
p=p->adr;
}
pi++;
}
}
int main()
{
freopen("bf.in","r",stdin);
freopen("bf.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
for (i=1; i<=m; ++i)
{
scanf("%d%d",&x,&y);
add(x, y);
}
bf();
for (i=1; i<=n; ++i)
if (cost[i])
printf("%d ",cost[i]);
else
if (i==s)
printf("0 ");
else printf("-1 ");
return 0;
}