Cod sursa(job #3160078)

Utilizator gabi2411rosu gabriel gabi2411 Data 22 octombrie 2023 20:59:21
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include "B.h"

std::vector<std::vector<int>> liste = MakeList("bfs.in", false);
int numNodes = liste.size();

std::vector<bool> viz(numNodes, false); // vector de vizitati
std::vector<int> tata(numNodes, 0); // vector de tati
std::vector<int> d(numNodes, -1); //vector de distante

void BFS(int s)
{
	std::queue<int> C;
	C.push(s);
	viz[s-1] = true;
	d[s-1] = 0;
	while (!C.empty())
	{
		int i = C.front();
		C.pop();
		//std::cout << i << '\n'; //afis nodul vizitat
		for (auto& j : liste[i-1])
		{
			if (!viz[j - 1])
			{
				C.push(j);
				viz[j - 1] = true;
				tata[j - 1] = i;
				d[j - 1] = d[i - 1] + 1;
			}
		}
	}
}

int main()
{
	std::ifstream in("bfs.in");
	std::ofstream out("bfs.out");

	int s;

	for (int i = 0; i < 3; i++)
	{
		in >> s;
 	}

	in.close(); //am aflat nodul de start si am inchis fisierul

	BFS(s);

	for (auto& i : d)
	{
		out << i << ' ';
	}

	out.close();

	return 0;
}