Cod sursa(job #667946)

Utilizator lucian666Vasilut Lucian lucian666 Data 23 ianuarie 2012 22:27:50
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>
#include<climits>
using namespace std;
ofstream out("bfs.out");
int a[100][100],q[100],uz[100],d[100],n,m,s;
void afis();
void citire();
void bfs(int start);
int main()
{
	citire();
	for(int i=1;i<=n;i++)
	d[i]=100000000;
	bfs(s);
	afis();
	return 0;
}
void afis()
{
	for(int i=1;i<=n;i++)
			if(d[i]!=INT_MAX)
			out<<d[i]<<" ";
		else
			out<<-1<<" ";
}
void citire()
{
	ifstream in("bfs.in");
	int x,y;
	in>>n>>m>>s;
	for(;m;m--)
	{
		in>>x>>y;
		a[x][y]=a[y][x]=1;
	}
}
void bfs(int start)
{
	int st,dr;
	st=dr=1;
	uz[start]=1;
	q[st]=start;
	d[start]=0;
	while(st<=dr)
	{
	int k=q[st];
		for(int i=1;i<=n;i++)
			if(a[k][i]==1&&uz[i]==0)
			{
				++dr;
				q[dr]=i;
				uz[i]=1;
				d[i]=d[q[st]]+1;
			}
			++st;
	}
}