Cod sursa(job #2666282)

Utilizator ADINAIOANA-BORTAAdina Borta ADINAIOANA-BORTA Data 1 noiembrie 2020 12:59:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

const int  NMAX = 100001;
vector<int> graf[NMAX];
int distante[NMAX];
bool vizitat[NMAX];
queue<int> coada;

void BFS(int x) {
	coada.push(x);
	vizitat[x] = true;
	while (!coada.empty()) {
		int curr = coada.front();
		coada.pop();
		for (int i = 0; i < graf[curr].size(); i++) {
			if (!vizitat[graf[curr][i]]) {
				vizitat[graf[curr][i]] = true;
				coada.push(graf[curr][i]);
				distante[graf[curr][i]] = distante[curr] + 1;
			}
		}
	}
	
}

int main() {
	ifstream in("bfs.in");
	ofstream out("bfs.out");
	int n, m, x, y, src;
	in >> n >> m >> src;

	for (int i = 0; i < m; i++) {
		in >> x >> y;
		graf[x].push_back(y);
	}

	//for (int i = 1; i <= n; i++) {
	//	cout << i << ": ";
	//	for (int j = 0; j < graf[i].size(); j++) {
	//		cout << graf[i][j]<<" ";
	//	}
	//	cout << endl;
	//}


	BFS(src);

	for (int i = 1; i <= n; i++) {
		if (distante[i] == 0) {
			distante[i] = -1;
		}
	}
	distante[src] = 0;

	for (int i = 1; i <= n; i++) {
		out << distante[i] << " ";
	}

	return 0;
}