Pagini recente » Cod sursa (job #2624452) | Cod sursa (job #1402909) | Cod sursa (job #1779759) | Cod sursa (job #3001700) | Cod sursa (job #314889)
Cod sursa(job #314889)
#include<stdio.h>
#define DIM 1000009
struct nod
{
int x;
nod *urm;
};
nod *lst[DIM];
int c[DIM],viz[DIM],n,m,s,cost[DIM];
void add (int a,int b)
{
nod *p=new nod;
p->x=b;
p->urm=lst[a];
lst[a]=p;
}
void read ()
{
int i,x,y;
scanf("%d%d%d",&n,&m,&s);
for(i=1;i<=m;++i)
{
scanf("%d%d",&x,&y);
add(x,y);
}
}
void bf (int s)
{
int st=1,dr=1,i;
for(i=1;i<=n;++i)
cost[i]=-1;
cost[s]=0;
nod *p;
viz[s]=1;
c[st]=s;
while(st<=dr)
{
for( p=lst[c[st]]; p; p=p->urm)
if(viz[p->x]==0)
{
c[++dr]=p->x;
viz[p->x]=1;
cost[p->x]=cost[c[st]]+1;
}
++st;
}
}
void show ()
{
int i;
nod *p;
for(i=1;i<=n;++i)
printf("%d ",cost[i]);
}
int main ()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
read ();
bf (s);
show ();
return 0;
}