Cod sursa(job #970923)

Utilizator cont_de_testeCont Teste cont_de_teste Data 8 iulie 2013 00:46:42
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

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

const int NMax = 100100;
int N, M, S;
vector<int> A[NMax], dist(NMax);
queue<int> Q;


int main() {
	#ifdef INFOARENA
		#define cin fin
		#define cout fout
	#endif
	cin >> N >> M >> S;
	for (int i = 1; i <= M; i++) {
		int X, Y;
		cin >> X >> Y;
		A[X].push_back(Y);
	}
	
	Q.push(S); dist.at(S) = 1;
	for (; Q.size(); Q.pop()) {
		int ret = Q.front();
		for (vector<int>::iterator it = A[ret].begin(); it != A[ret].end(); it++) {
			if (!dist.at(*it)) {
				dist.at(*it) = dist.at(ret) + 1;
				Q.push(*it);
			}
		}
	}
	
	for (int i = 1; i <= N; i++)
		cout << dist.at(i) - 1 << ' ';
}