Cod sursa(job #401999)

Utilizator BooZZySandu Bogdan BooZZy Data 23 februarie 2010 12:02:55
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<stdio.h>
int n,m,s,c[200010],viz[100010],i,k,val,x,y;
struct nod
{
	int inf;
	nod *adr;
};
nod *l[100005],*p,*cn,*u;
int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d %d %d",&n,&m,&s);
	for(i=0;i<m;i++)
	{
		scanf("%d %d",&x,&y);
		cn=new nod;
		cn->inf=y;
		cn->adr=l[x];
		l[x]=cn;
	}
	for(i=0;i<=n;i++)
		viz[i]=-1;
	k=1;
	c[k]=s;
	viz[s]=0;
	val=1;
	for(i=1;i<=k;i++)
	{
		u=l[c[i]];
		while(u)
		{
			if(viz[u->inf]==-1)
			{
				viz[u->inf]=viz[c[i]]+1;
				c[++k]=u->inf;
			}
			u=u->adr;
		}
	}
	for(i=1;i<=n;i++)
		printf("%d ",viz[i]);
	return 0;
}