Cod sursa(job #811426)

Utilizator Paula-ElenaPaula-Elena Margarit Paula-Elena Data 12 noiembrie 2012 10:42:08
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream>
#include<vector>
using namespace std;

int i, n, fiu, m, h, x, y, j, s, nod,  used[100010], d[100010], c[100010];
vector <int> G[100010];

void BFS(int s){
	h = 1;
	for(i=1; i<=n; i++) d[i] = -1;
	c[h] = s;
	d[s] = 0;
	used[s] = 1;
	for(i=1; i<=h; i++){
		nod = c[i];
		for(j=0; j<G[nod].size(); j++){
			fiu = G[nod][j];
			if(used[fiu] == 0) {
				h++;
				c[h] = fiu;
				used[fiu] = 1;
				d[fiu] = d[nod] + 1;
			}
		}
	}
}

int main(){

	ifstream fin("bfs.in");
	ofstream fout("bfs.out");

	fin >> n >> m >> s;
	for(i=0; i<m; i++){
		fin >> x >> y;
		G[x].push_back(y);
	}
	BFS(s);
	
	for(i=1; i<=n; i++) fout << d[i] << " ";

	return 0;
}