Cod sursa(job #229270)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 9 decembrie 2008 19:42:06
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<stdio.h>
#define N 100010
struct nod{ int inf;nod *urm;};
nod *prim[N],*pp;
int n,m,s,i,a,b,coada[N],viz[N],pr,ul,nc;
void readd(),solve(),printt(),pune();
int main()
{
	readd();
	solve();
	printt();
	return 0;
}
void readd()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d%d%d",&n,&m,&s);
	for(i=1;i<=m;i++){ scanf("%d%d",&a,&b);pune();}
}
void solve()
{
	coada[1]=s;viz[s]=1;
	pr=1;ul=1;
	while(pr<=ul)
	{ nc=coada[pr];
	  for(pp=prim[nc];pp;pp=pp->urm)
	   if(!viz[pp->inf])
	    { coada[++ul]=pp->inf;viz[pp->inf]=viz[nc]+1;}
	  pr++;
	}
}
void printt()
{
	for(i=1;i<=n;i++)printf("%d ",viz[i]-1);
}
void pune()
{   nod *paux;
    paux=new nod;
    paux->inf=b;
    paux->urm=prim[a]?prim[a]:0;
    prim[a]=paux;
}