Cod sursa(job #1698499)

Utilizator Gabiap2015Apostol Gabriel Gabiap2015 Data 4 mai 2016 16:57:50
Problema BFS - Parcurgere in latime Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
// BFS.cpp : Defines the entry point for the console application.
//

#include "iostream"
#include "fstream"
using namespace std;

struct nod{
	char ver;
	int distanta;
};

int math[10][10], n, m, s;
nod nods[10];

void bfs(int nod_s)
{
	if (nods[nod_s].ver == 'w')
		nods[nod_s].ver = 'G';
	if (nods[nod_s].distanta == -1)
		nods[nod_s].distanta = 0;
	for (int i = 1; i <= n; i++)
	{
		if (math[nod_s][i] == 1 && nods[i].ver == 'w')
		{
			nods[i].ver = 'G';
			nods[i].distanta = nods[nod_s].distanta + 1;
		}
	}
	nods[nod_s].ver = 'B';
	for (int i = 1; i <= n; i++)
	{
		if (math[nod_s][i] == 1 && nods[i].ver == 'G')
			bfs(i);
	}
}

int main()
{
	int x, y;
	ifstream bfs_in;
	ofstream bfs_out;
	bfs_in.open("bfs.in");
	bfs_out.open("bfs.out");
	/*citire si atribuire*/
	bfs_in >> n >> m >> s;
	for (int i = 1; i <= m; i++)
	{
		bfs_in >> x >> y;
		math[x][y] = 1;
	}
	for (int i = 1; i <= n; i++)
	{
		nods[i].ver = 'w';
		nods[i].distanta = -1;
	}
	/*bfs*/
	bfs(s);
	/*scriere*/
	for (int i = 1; i <= n; i++)
	{
		bfs_out << nods[i].distanta <<' ';
	}
	return 0;
}