Pagini recente » Cod sursa (job #2224453) | Cod sursa (job #2294933) | Cod sursa (job #358832) | Cod sursa (job #1797970) | Cod sursa (job #343014)
Cod sursa(job #343014)
#include <stdio.h>
#define DIM 100000005
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("bfs.in","r",stdin);
freopen("bfs.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;
}