Cod sursa(job #409885)

Utilizator cosgbCosmin cosgb Data 3 martie 2010 21:54:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
# include <stdio.h>
long n,m,s;
struct nod { nod * urm;
             long info;
		   };
nod *v[100005];

long q[100005],viz[100005];

void read()
{ long x,y,i;
  nod *p;
  for (i=1;i<=m;i++)
	    {scanf ("%ld%ld",&x,&y);
         
		 p=new nod;
		 p->info=y;
		 p->urm=v[x];
		 v[x]=p;
		}
}
  


void bfs()
{ long inc,sf,x;
	inc=sf=1;
  nod *p;
  viz[s]=0;
  q[1]=s;
  while (inc<=sf)
  { p=v[q[inc]];
	  while (p)
	  { if (viz[p->info]==-1)
	      {sf++;
	       q[sf]=p->info;
		   viz[p->info]=viz[q[inc]]+1;
		  }
		 p=p->urm;
	  }
    inc++;
  }
}

void afisare()
{ long i;
  for (i=1;i<=n;i++)
	  printf ("%ld ",viz[i]);
}
        		  

int main()
{ freopen ("bfs.in","r",stdin);
  freopen ("bfs.out","w",stdout);
  long i,j;
  scanf ("%ld %ld %ld",&n,&m,&s);
  read();
  for (i=1;i<=n;i++)
	    viz[i]=-1;
  bfs ();
  afisare();
  
  
  return 0;
}