Cod sursa(job #2378990)

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

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

int main()
{
	std::vector <int> graf[100001];
	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)<<" ";
	}

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