Cod sursa(job #2666504)

Utilizator ihorvaldsTudor Croitoru ihorvalds Data 2 noiembrie 2020 00:26:00
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <vector>
#include <queue>
#include <unordered_map>
#include <set>
using namespace std;

unordered_map<int, set<int>> g;
vector<int> distances(1000000, { -1 });
queue<int> q;

int main()
{
	ifstream in("bfs.in");
	ofstream out("bfs.out");

	int n, m, s;
	in >> n >> m >> s;
	
	int a, b;
	for (int i = 0; i < m; ++i) {
		in >> a >> b;
		g[a].insert(b);
	}

	for (int i = 1; i <= n; ++i) {
		distances[i] = -1;
	}

	q.push(s);
	distances[s] = 0;
	while (!q.empty()) {
		int currentNode = q.front();
		q.pop();

		for (auto& n : g[currentNode]) {
			if (distances[n] == -1) {
				distances[n] = distances[currentNode] + 1;
				q.push(n);
			}
		}
	}

	for (int i = 1; i <= n; ++i) {
		out << distances[i] << ' ';
	}
}