Cod sursa(job #2384797)

Utilizator andrei828Ungureanu Andrei-Liviu andrei828 Data 21 martie 2019 10:31:54
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>
#include <queue>

void BFS(int node, const std::vector<std::vector<int>>& graph, std::vector<int>& visited_nodes) {
	std::queue<int> q;
	int top;
	visited_nodes[node] = 0;
	q.push(node);

	while (!q.empty()) {
		top = q.front();
		q.pop();
		for (auto i: graph[top]) {
			if (visited_nodes[i] < 0) { 
				visited_nodes[i] = visited_nodes[top] + 1;
				q.push(i);
			}
		}
	}
}

int main() {
	std::ifstream fin("bfs.in", std::ifstream::in);
	std::ofstream fout("bfs.out", std::ofstream::out);
	int n, m, s, tmp1, tmp2;
	fin >> n >> m >> s;
	std::vector<int>visited_nodes(n + 1, -1);
	std::vector<std::vector<int>> graph(n + 1);

	for (int i = 0; i < m; i++) {
		fin >> tmp1 >> tmp2;
		graph[tmp1].push_back(tmp2);
	}

	BFS(s, graph, visited_nodes);

	for (int index = 1; index <= n; index++) 
		fout << visited_nodes[index] << ' ';
}