Cod sursa(job #1426453)

Utilizator gabi.cristacheGabi Cristache gabi.cristache Data 29 aprilie 2015 19:09:03
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>

#define MaxN 100005
#define MaxM 1000005

using namespace std;

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

int N, M, S, distances[MaxN];
vector<int> neighbours[MaxN];
queue<int> q;

int main() {
	fill(distances, distances + MaxN, -1);

	fin >> N >> M >> S;

	for (int i = 0; i < M; ++i) {
		int x, y;
		fin >> x >> y;
		neighbours[x].push_back(y);
	}

	distances[S] = 0;
	q.push(S);
	while (!q.empty()) {
		int v = q.front();
		q.pop();

		for (int i = 0; i < neighbours[v].size(); ++i) {
			int u = neighbours[v][i];
			if (distances[u] == -1) {
				distances[u] = distances[v] + 1;
				q.push(u);
			}
		}
	}

	for (int i = 1; i <= N; ++i) {
		fout << distances[i] << ' ';
	}
	fout << '\n';

	return 0;
}