Cod sursa(job #1067237)

Utilizator dunhillLotus Plant dunhill Data 26 decembrie 2013 16:24:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <vector>
using namespace std;

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

#define NMAX 100001

int i, j, N, M, S;
int a, b, Top, Bot;
int x;

int Coada[NMAX];
int Dist[NMAX];

vector <int> v[NMAX];
vector <int> :: iterator it;

bool Used[NMAX];

int main() {
	fin >> N >> M >> S;
	for (i = 1; i <= M; ++i) {
		fin >> a >> b;
		v[a].push_back(b);
	}
	Used[S] = true;
	Bot = 1;
	Coada[++Top] = S;
	while (Bot <= Top) {
		x = Coada[Bot];
		++Bot;
		for (it = v[x].begin(); it != v[x].end(); ++it) {
			if (!Used[*it]) {
				Dist[*it] = Dist[x] + 1;
				Used[*it] = true;
				Coada[++Top] = *it;
			}
		}
	}
	for (i = 1; i <= N; ++i) 
		if (!Dist[i] && i != S) fout << -1 << ' ';
		else 
			fout << Dist[i] << ' ';
	fout << '\n';
	return 0;
}