Cod sursa(job #1698974)

Utilizator Gabiap2015Apostol Gabriel Gabiap2015 Data 5 mai 2016 19:05:18
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
// BFS v1.0.cpp : Defines the entry point for the console application.
//
#include "fstream"
#include "vector"
#include "queue"
using namespace std;

ifstream bfs_in("bfs.in");
ofstream bfs_out("bfs.out");

int n, m, s;
vector<int> distanta;
vector<vector<int>> graph;
queue<int> coada;

void BFS(int nod)
{
	coada.push(nod);
	distanta[nod] = 1;

	while (coada.size())
	{
		int element;
		element = coada.front();
		for (int i = 0; i < graph[element].size(); i++)
		{
			if (!distanta[graph[element][i]])
			{
				distanta[graph[element][i]] = distanta[element] + 1;
				coada.push(graph[element][i]);
			}
		}
		coada.pop();
	}
}

int main()
{
	int x, y;
	bfs_in >> n >> m >> s;
	s--;
	graph.resize(n);
	distanta.resize(n, 0);
	for (int i = 1; i <= m; i++)
	{
		bfs_in >> x >> y;
		x--;
		y--;
		graph[x].push_back(y);
	}
	BFS(s);
	for (int i = 0; i < distanta.size(); i++)
		bfs_out << distanta[i] - 1 << ' ';
}