Cod sursa(job #348557)

Utilizator Binary_FireFlorin Pogocsan Binary_Fire Data 16 septembrie 2009 00:44:22
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>

using namespace std;

#define fin  "bfs.in"
#define fout "bfs.out"

#define NMAX 100010

int N, M, S, dist[NMAX];
vector<int> g[NMAX];
queue<int> q;

int main()
{
	int i, a, b;

	ifstream f1(fin);
	ofstream f2(fout);
	
	f1 >> N >> M >> S;

	for ( i = 1; i <= M; ++i )
		f1 >> a >> b, g[a].push_back(b);
	for ( i = 1; i <= N; ++i )
		dist[i] = -1;
	dist[S] = 0;
	q.push(S);
	while ( !q.empty() )
	{
		a = q.front();
		q.pop();
		for ( i = 0; i < g[a].size(); ++i )
			if ( dist[ g[a][i] ] == -1 )
				dist[ g[a][i] ] = dist[a] + 1, q.push(g[a][i]);
	}

	for ( i = 1; i <= N; ++i )
		f2 << dist[i] << " ";
	f2 << endl;

	return 0;
}