Cod sursa(job #263582)

Utilizator adrian69adrian horia adrian69 Data 20 februarie 2009 17:07:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>

struct nod
{
 int no;
 nod *urm;
};
nod *a[100005];
int n,m;
int b[100005],c[100005];
int cap,coada;
void add(int x,int y)
{
 nod *p=new nod;
 p->no=y;
 p->urm=a[x];
 a[x]=p;
}
int main()
{int v,x,y;
 freopen("bfs.in","r",stdin);
 freopen("bfs.out","w",stdout);
 scanf("%d %d %d",&n,&m,&v); 
 int i;
 for(i=1;i<=m;i++)
 {scanf("%d %d",&x,&y);
  add(x,y);
 } 
 for(i=1;i<=n;i++)
	c[i]=-1; 
 c[v]=0;
 b[cap]=v;
 coada++;
 nod *p;
 while(cap<=coada)
 {
  p=a[b[cap]];
  while(p)
  {
	if(c[p->no]==-1)
    {c[p->no]=c[b[cap]]+1;
    b[coada++]=p->no;
    }
	p=p->urm;
  }	  
  cap++;
 } 
 for(i=1;i<=n;i++)
	printf("%d ",c[i]);  
 printf("\n");
 return 0;
}