Cod sursa(job #1483803)

Utilizator DacianBocea Dacian Dacian Data 9 septembrie 2015 22:26:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <vector>
#include <fstream>
#include <queue>
#include <cstring>

std::vector<int>g[100010];
int dist[100010];

void BFS(int& s){
	std::queue<int> Q;
	Q.push(s);
	dist[s] = 0;
	while (!Q.empty()){
		int c = Q.front();
		Q.pop();
		for (auto i : g[c])
			if (dist[i]<0){
				dist[i] =dist[c]+ 1;
				Q.push(i);
			}
	}
}

int main(){
	std::ifstream f("bfs.in");
	std::ofstream c("bfs.out");
	std::memset(dist, -1, sizeof(dist));
	int n, m, s, a, b;
	f >> n >> m >> s;
	for (int i = 0; i < m; ++i){ f >> a >> b; g[a].push_back(b); }
	BFS(s);
	for (int i = 1; i <= n; ++i) c << dist[i]<<" ";
	return 0;
}