Cod sursa(job #3031133)

Utilizator tudor036Borca Tudor tudor036 Data 18 martie 2023 20:09:19
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream F("bfs.in");
ofstream G("bfs.out");

vector<vector<int>> list;
int N, M, S;

void Read() {
	int x, y;
	F >> N >> M >> S;

	list.resize(N + 1);

	for (int i = 1; i <= M; i++) {
		F >> x >> y;

		list[x].push_back(y);
	}
}

void BFS() {
	vector<int> d(N + 1, 0), u(N + 1, 0);
	queue<int> Q;
	int c;

	Q.push(S);
	u[S] = 1;
	d[S] = 0;

	while (!Q.empty()) {
		c = Q.front();
		Q.pop();

		for (int node : list[c]) {
			if (u[node] == 0) {
				Q.push(node);
				u[node] = 1;
				d[node] = d[c] + 1;
			}
		}
	}
	
	for (int i = 1; i <= N; i++) {
		cout << (d[i] == 0 && i != S ? -1 : d[i]) << " ";
	}
}

int main()
{
	Read();
	BFS();

	return 0;
}