Cod sursa(job #1077127)

Utilizator robert_stefanRobert Stefan robert_stefan Data 10 ianuarie 2014 22:07:51
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <vector>
#define IN "bfs.in"
#define OUT "bfs.out"
#define NMAX 100005

using namespace std;

ifstream in(IN);
ofstream out(OUT);

int main()
{
	int n, m, s, a, b, st, dr, i, coada[NMAX], cost[NMAX];
	vector <int> G[NMAX];
	in>>n>>m>>s;
	while(m)
	{
		in>>a>>b;
		G[a].push_back(b);
		--m;
	}
	for(i=1; i<=n; ++i)
		cost[i]=-1;
	st=1, dr=1;
	coada[st]=s;
	cost[s]=0;
	while(st<=dr)
	{
		for(i=0; i<G[coada[st]].size(); ++i)
			if(cost[G[coada[st]][i]]==-1)
			{
				coada[++dr]=G[coada[st]][i];
				cost[coada[dr]]=cost[coada[st]]+1;
			}
		++st;
	}
	for(i=1; i<=n; ++i)
		out<<cost[i]<<' ';
	out<<'\n';
	in.close();
	out.close();
	return 0;
}