Cod sursa(job #591931)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 25 mai 2011 22:21:58
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

vector <long> G[100005];
long Cost[100005];
unsigned long N, Start;

void Read ()
{
	ifstream fin ("bfs.in");
	unsigned long i, X, Y, M;
	fin >> N >> M >> Start;
	for (i=0; i<M; i++)
	{
		fin >> X >> Y;
		if (X!=Y)
		{
			G[X].push_back (Y);
		}
	}
	fin.close ();
}

void Type ()
{
	ofstream fout ("bfs.out");
	unsigned long i;
	for (i=1; i<=N; i++)
	{
		fout << Cost[i] << "\n";
	}
	fout.close ();
}

void BFS (long S)
{
	unsigned long Coada[100005], i, j, n=1;
	for (i=0; i<=N; i++)
	{
		Cost[i]=-1;
	}
	Cost[S]=0;
	Coada[0]=S;
	for (i=0; i<n; i++)
	{
		for (j=0; j<G[Coada[i]].size (); j++)
		{
			if (Cost[G[Coada[i]][j]]==-1)
			{
				Cost[G[Coada[i]][j]]=Cost[Coada[i]]+1;
				Coada[n++]=G[Coada[i]][j];
			}
		}
	}
}

int main ()
{
	Read ();
	BFS (Start);
	Type ();
	return 0;
}