Cod sursa(job #229136)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 9 decembrie 2008 13:56:55
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
#define N 100010
int n,m,s,i,a,b,coada[N],viz[N],pr,ul,nc,*vec[N],gr[N],nv;
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);gr[a]++;}
	for(i=1;i<=n;i++)
	{ vec[i]=new int [gr[i]+2];gr[i]=0;}
	freopen("bfs.in","r",stdin);
	scanf("%d%d%d",&n,&m,&s);
	for(i=1;i<=m;i++){ scanf("%d%d",&a,&b);vec[a][++gr[a]]=b;}

}
void solve()
{
	coada[1]=s;viz[s]=1;
	pr=1;ul=1;
	while(pr<=ul)
	{ nc=coada[pr];nv=gr[nc];
	  for(i=1;i<=nv;i++)
	   if(!viz[vec[nc][i]])
	    { coada[++ul]=vec[nc][i];viz[vec[nc][i]]=viz[nc]+1;}
	  pr++;
	}
}
void printt()
{
	for(i=1;i<=n;i++)printf("%d ",viz[i]-1);
}