Cod sursa(job #553117)

Utilizator GaborGabrielFMI - GabrielG GaborGabriel Data 13 martie 2011 17:08:09
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream.h>
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,s;
int Graf[10003][10003],Coada[10003],color[10003],d[10003],inainte[10003],incep=1,sf=0;
//Pentru inceput voi face parcurgerea in latime cu ajutorul matricei de adiacenta.
int main()
{
	int i,x,y,u,v;
	f>>n>>m>>s;
	for(i=1;i<=m;i++)
	{
		f>>x>>y;
		Graf[x][y]=1;
	}
	//Alb-1 ; Gri-2 ; Negru-3
	for(i=1;i<=n;i++)
	{
		color[i]=1;
		d[i]=-1;
		inainte[i]=0;
	}
	color[s]=2;
	d[s]=0;	
	inainte[s]=0;
	Coada[++sf]=s;
	
	while(incep<=sf)
	{
		u=Coada[incep];
		for(v=1;v<=n;v++)
		{
			if(Graf[u][v]==1)
				if(color[v]==1)
				{
					color[v]=2;
					d[v]=d[u]+1;
					inainte[v]=u;
					Coada[++sf]=v;
				}
		}
		incep++;
		color[u]=3;
	}
	
	for(i=1;i<=n;i++)	
		g<<d[i]<<' ';
	g<<'\n';	
	f.close();
	g.close();
	return 0;
}