Cod sursa(job #237123)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 29 decembrie 2008 00:56:40
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
# include <stdio.h>
# define Nmax 100001

struct Nod{
	int v,t;
	Nod * ad;
  };
Nod  *L[Nmax],*p,*q;
int N,S,Viz[Nmax],C[Nmax];

int main(){
  long M,i;
  int x,y;
  freopen("bfs.in", "r", stdin);
  freopen("bfs.out", "w", stdout);
  scanf("%d %ld %d",&N,&M,&S);
  for (i=1;i<=N;i++) Viz[i]=-1;
  for (i=1;i<=M;i++){
    scanf("%d %d",&x,&y);
    p=new Nod;  q=L[x];
    (*p).v=y;  (*p).t=x;
    (*p).ad=q; L[x]=p;
  }
  x=y=1;
  C[1]=S; Viz[S]=0;
  while (x<=y){
	p=L[C[x]];
	while (p!=NULL) {
	    if (Viz[(*p).v]==-1) {
	       Viz[(*p).v]=Viz[C[x]]+1;
	       C[++y]=(*p).v;
	     }
	     p=(*p).ad;
	   }
	x++;
  }
  for (i=1;i<=N;i++)
    printf("%d ",Viz[i]);
  return 0;
}