Cod sursa(job #283951)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 20 martie 2009 20:48:16
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <stdio.h>
#include <string.h>

#define Nmax 1001

int a[Nmax][Nmax],d[Nmax],i,j,s,n,m,c[Nmax],p,x,y;

int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	
	scanf("%d %d %d",&n,&m,&s);
	
	while(m--)
	{
		scanf("%d %d", &x, &y);
		a[x][y]=1;
	}
	
	memset(c,-1,sizeof(c));
	
	p=1;
	d[1]=s;
	c[s]=0;
	for (i=1;i<=p;++i)
		for (j=1;j<=n;++j)
			if (c[j]==-1 && a[d[i]][j]==1)
			{
				p++;
				d[p]=j;
				c[j]=c[d[i]]+1;
			}
	
	for (i=1;i<=n;++i)
		printf("%d ", c[i]);
	return 0;
}