Cod sursa(job #545675)

Utilizator Catah15Catalin Haidau Catah15 Data 3 martie 2011 19:55:22
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include <deque>
#include <vector>
#include <iostream>

using namespace std;

#define maxN 100005

int N, M, S;
int cost[maxN];
vector < int > lista[maxN];
deque < int > coada;


void bf ()
{
	coada.push_back(S);
	cost[S] = 0;
	
	for (unsigned int i = 0; i < coada.size(); ++ i)
	{
		int nod = coada[i];
		
		for (unsigned int j = 0; j < lista[nod].size(); ++ j)
			if (cost[lista[nod][j]] == -1)
			{
				coada.push_back(lista[nod][j]);
				cost[lista[nod][j]] = cost[nod] + 1;
			}
	}
}


int main()
{
	ifstream f("bfs.in");
	ofstream g("bfs.out");
	
	f >> N >> M >> S;
	
	for (int i = 1; i <= M; ++ i)
	{
		int x, y;
		
		f >> x >> y;
		
		lista[x].push_back(y);
	}
	
	memset (cost, -1, sizeof(cost));
	
	bf ();
	
	for (int i = 1; i <= N; ++ i)
			g << cost[i] << " ";
	
	f.close();
	g.close();
	
	return 0;
}