Cod sursa(job #1691379)

Utilizator vlad.dumitracheDumitrache Vlad vlad.dumitrache Data 18 aprilie 2016 10:21:42
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <fstream>

using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

int n, m;
vector<vector<int>>graph(100000);
vector<bool>visited(100000,false);
vector<int>cost(100000,-1);

void bfs(int vertex)
{
	if (vertex < 0 || vertex > n - 1)
		return;
	queue<int>q;
	int elem;
	q.push(vertex);
	visited[vertex] = true;
	cost[vertex] = 0;
	while (!q.empty())
	{
		elem = q.front();
		for (int i = 0; i < graph[elem].size();i++)
			if (!visited[graph[elem][i]])
			{
				q.push(graph[elem][i]);
				cost[graph[elem][i]] = cost[elem] + 1;
				visited[graph[elem][i]] = true;
			}
		q.pop();
	}
}

int main()
{
	int x, y, s;
	f >> n >> m >> s;
	for (int i = 0; i < m; i++)
	{
		f >> x >> y;
		x--; y--;
		graph[x].push_back(y);
	}
	bfs(s - 1);
	for (int i = 0; i < n; i++)
		g << cost[i] << " ";
    return 0;
}