Cod sursa(job #1972289)

Utilizator Robert29FMI Tilica Robert Robert29 Data 22 aprilie 2017 18:37:19
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<fstream>
#include<vector>
#include<queue>
#define N 100001;
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");

int* BFS(vector<int> *v, int n, int start)
{
	int *dist = new int[n + 1];
	queue<int> q;

	for(int i = 1; i <= n; ++i)
	{
		dist[i] = -1;
	}
	dist[start] = 0;
	q.push(start);

	while(!q.empty())
	{
		int node = q.front();

		for(int i = 0; i < v[node].size(); ++i)
		{
			int neighbour = v[node][i];
			if(dist[neighbour] == -1)
			{
				dist[neighbour] = dist[node] + 1;
				q.push(neighbour);
			}
		}

		q.pop();
	}

	return dist;
}


int main(){
	int n, m, start;
	cin >> n >> m >> start;
	vector<int> v[n + 1];
	for(int i = 1; i <= m; ++i)
	{
		int from, to;
		cin >> from >> to;
		v[from].push_back(to);
	}

	int *dist = BFS(v, n, start);

	for(int i = 1; i <= n; ++i)
	{
		cout << dist[i] << " ";
	}

	cin.close();
	cout.close();
	return 0;
}