Cod sursa(job #687506)

Utilizator attila3453Geiszt Attila attila3453 Data 22 februarie 2012 15:26:58
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <deque>
#include <vector>
#include <fstream>

using namespace std;

int i, n, m, s, start, end;
vector<int> *noduri;
deque<int> q;
int *cost;

void bfs(int start)
{
	for(i = 1;i <= n;cost[i++] = -1);
	cost[start] = 0;
	q.push_back(start);

	while(!q.empty())
	{
	    start = q.front();
	    q.pop_front();

		for(i = 0;i < (signed)noduri[start].size();i++)
		{
			end = noduri[start][i];

			if(cost[end] == -1)
			{
			    q.push_back(end);
				cost[end] = cost[start] + 1;
			}
		}
	}
}

int main()
{
	ifstream fi("bfs.in");
	ofstream fo("bfs.out");

	fi>>n>>m>>s;

	noduri = new vector<int>[n+1];
	cost = new int[n+1];

	for(i = 0;i < m;i++)
	{
		fi>>start>>end;
		noduri[start].push_back(end);
	}

	bfs(s);

	for(i = 1;i <= n;i++)
		fo<<cost[i]<<' ';
}