Cod sursa(job #3038689)

Utilizator lucafecheteFechete Luca Andrei lucafechete Data 27 martie 2023 17:43:36
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");	

struct Graph {
	vector<int> node;

	int len() {
		return node.size();
	}
}graph[100009];

int shortest_path_bfs(int n, Graph graph[], int start, int end) {
	queue<int> q;
	vector<bool> visited = vector<bool> (n + 1, false);
	vector<int> distance = vector<int>(n + 1, 0);

	q.push(start);
	visited[start] = true;

	while (q.size() != 0) {
		int vertex = q.front();
		q.pop();

		if (vertex == end)
			return distance[vertex];
		for (int i = 0; i < (int)graph[vertex].node.size(); i++) {
			if (!visited[graph[vertex].node[i]]) {
				distance[graph[vertex].node[i]] = distance[vertex] + 1;
				visited[graph[vertex].node[i]] = true;
				q.push(graph[vertex].node[i]);
			}	
		}
	}
	return -1;
}

int n, m, s, x, y;

int main()
{
	fin >> n >> m >> s;
	for (int i = 0; i < m; i++) {
		fin >> x >> y;
		graph[x].node.push_back(y);
	}
	for (int i = 1; i <= n; i++) {
		fout << shortest_path_bfs(n, graph, s, i) << " ";
	}
	return 0;
}