Cod sursa(job #1541919)

Utilizator gabi.cristacheGabi Cristache gabi.cristache Data 4 decembrie 2015 18:33:22
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
// infoarenaDFSnonRec.cpp : Defines the entry point for the console application.
//

//#include "stdafx.h"
#include <fstream>
#include <vector>
#include <queue>

#define MaxN 100005
#define INF 123456789

using namespace std;

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

int N, M, S;
vector<int> G[MaxN];

int main() {
	fin >> N >> M >> S;

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

	vector<int> dist(N + 1, INF);
	queue<int> visitedQueue;

	dist[S] = 0;
	visitedQueue.push(S);

	while (!visitedQueue.empty()) {
		int node = visitedQueue.front();
		visitedQueue.pop();

		for (int i = 0; i < G[node].size(); ++i) {
			int next = G[node][i];
			if (dist[node] + 1 < dist[next]) {
				dist[next] = dist[node] + 1;
				visitedQueue.push(next);
			}
		}
	}

	for (int i = 1; i <= N; ++i) {
		fout << ((dist[i] == INF) ? -1 : dist[i]) << ' ';
	}

	return 0;
}