Cod sursa(job #681396)

Utilizator marbleMaria Cristina marble Data 17 februarie 2012 00:12:26
Problema BFS - Parcurgere in latime Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb

#include<fstream>
using namespace std;
# define maxi 10000
int n,m, a[maxi][maxi],viz[100],x,y;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
void citire()
{
	int i,j;
	fin>>n>>m>>x;
	while(fin>>i>>j)
			a[i][j]=1;
	for(i=1;i<=n;i++) viz[i]=-1;
}


void bfs(int x)
{
	int c[100],k,p,u,i;
	p=u=1;
	c[u]=x;viz[x]=0;
	while(p<=u)
	{
		k=c[p];
		p++;
		for(i=1;i<=n;i++)
			if(viz[i]==-1&&a[k][i]!=0)
				
			{
				viz[i]=viz[k]+1;
				u++;
				c[u]=i;
			}
	}
	
}
/*void scrie(int y)
{
	if (y!=-1)
	{
		scrie(viz[y]);
		cout<<y<<' ';
	}
}*/
int main()
{
	int i;
	citire();
	bfs(x);
	for(i=1;i<=n;i++)
		fout<<viz[i]<<' ';
	/*cin>>y;
	if(viz[y]!=0)
	scrie(y);
	else
		cout<<"nu exista drum de la 1 la"<<y;*/
return 0;	
	
}