Cod sursa(job #2764378)

Utilizator DariusMDarius Feher DariusM Data 20 iulie 2021 17:34:33
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <queue>
#include <vector>
using namespace std;

const int maxVert = 1000001;

vector<int> Adj[maxVert];
queue<int> nodes;
int dist[maxVert];

int main() {
	int n, m, s, x, y;
	cin >> n >> m >> s;
	for (int i = 1; i <= m; ++i) {
		cin >> x >> y;
		Adj[x].push_back(y);
	}
	nodes.push(s);
	int front;
	for (int i = 1; i <= n; ++i) {
		dist[i] = -1;
	}
	dist[s] = 0;
	while (!nodes.empty()) {
		front = nodes.front();
		nodes.pop();
		int neighbours = Adj[front].size();
		for (int i = 0; i < neighbours; ++i) {
			if (dist[Adj[front][i]] == -1) {
				dist[Adj[front][i]] = dist[front] + 1;
				nodes.push(Adj[front][i]);
			}
		}
	}
	for (int i = 1; i <= n; ++i) {
		cout << dist[i] << " ";
	}
	cout << "\n";
	return 0;
}