Cod sursa(job #2924809)

Utilizator Cosmin3105Cosmin Colceru Cosmin3105 Data 11 octombrie 2022 13:37:20
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>

using namespace std;

ifstream fin("bfs.in");

bool *viz;
int *dist;

void bfs(vector<int> *la,int n) {
	queue<int> coada;

	coada.push(n);
	viz[n] = true;
	dist[n] = 0;

	while (!coada.empty()) {
		int u = coada.front();
		coada.pop();

		for (int i = 0; i < la[u].size(); i++) {
			int v = la[u][i];
			if (!viz[v]) {
				viz[v] = true;
				coada.push(v);
				dist[v] = dist[u] + 1;
			}
		}
	}	
}


int main() {
	vector<int> *la;
	int n, m, s;
	fin >> n >> m >> s;
	la = new vector<int>[n + 1];
	for (int i = 0; i < m; i++) {
		int x, y;
		fin >> x >> y;
		la[x].push_back(y);
	}

	viz = new bool[n + 1];
	for (int i = 1l; i <= n; i++)
		viz[i] = false;

	dist = new int[n + 1];
	for (int i = 0; i <= n; i++)
		dist[i] = -1;

	bfs(la, s);

	for (int i = 1; i <= n; i++)
		cout << dist[i] << " ";

	return 0;
}