Cod sursa(job #2379021)

Utilizator chioseChiose Razvan-Alexandru chiose Data 12 martie 2019 20:08:52
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <vector>

int bfa(int node, std::vector <int> graf[], int* viz, int finalNode, int n)
{
	bool found = 0;
	int min = 2147483647, aux;
	if (node == finalNode)
		return 0;
	viz[node]++;
	for (int i = 0; i < graf[node].size(); i++)
		if (viz[graf[node][i]] < n)
		{
			aux = bfa(graf[node][i], graf, viz, finalNode, n);
			if (aux != -1 && aux < min)
			{
				min = aux;
				found = 1;
			}
		}
	if (found == 1)
		return 1+min;
	else
		return -1;
}

int main()
{
	std::vector <int> graf[100];
	std::ifstream in("bfs.in");
	std::ofstream out("bfs.out");

	int m, n, x, y, s;
	in >> n >> m >> s;

	for (int i = 0; i < m; i++)
	{
		in >> x >> y;
		graf[x].push_back(y);
	}

	int *viz = new int[n + 1];
	
	for  (int i = 1; i <= n ; i++)
	{
		for (int i = 1; i <= n; i++)
			viz[i] = 0;
		out << bfa(s, graf, viz, i, n)<<" ";
	}

	in.close();
	out.close();
	return 0;
}