Cod sursa(job #2041942)

Utilizator Spiromanii_MessiUNIBUCThrowTerror Spiromanii_Messi Data 17 octombrie 2017 21:35:34
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <vector>
#include <fstream>
#include <queue>

using namespace std ;

int main(int argc, char const *argv[])
{
	ifstream cin ("bfs.in") ;
	ofstream cout ("bfs.out") ; 
	int n, m, source ;
	cin >> n >> m >> source ; 
	vector < vector<int> > gr (n + 1) ; 
	while (m --) {
		int x, y ; 
		cin >> x >> y ; 
		gr [x].push_back (y) ; 
	}
	vector <int> dist (n + 1, 1 << 29) ;
	queue <int> Q ;
	Q.push (source) ;
	dist [source] = 0 ; 
	while (!Q.empty()) {
		auto nod = Q.front () ;
		Q.pop () ; 
		for (auto &x : gr [nod]) {
			if (dist [x] > dist [nod] + 1) {
				dist [x] = dist [nod] + 1 ; 
				Q.push (x) ; 
			}
		}
	}
	for (int i = 1 ; i <= n ; ++ i) {
		if (dist [i] >= (1 << 29)) {
			cout << -1 << ' ' ; 
		}
		else {
			cout << dist [i] << ' ' ; 
		}
	}
	cout << '\n' ; 
	return 0;
}