Cod sursa(job #415608)

Utilizator liviu12345Stoica Liviu liviu12345 Data 11 martie 2010 16:34:23
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<fstream.h>
#include<vector>

using namespace std;

vector < vector <int> > lista;

int sel[100001],n,m,v=0,coada[100000];
void BFS (int a)
{
	int k,i;
	coada[1]=a;
	sel[a] = 1;
	k=1;
	n=2;

	while(k<n)
	{
		for(i= 0; i < lista[coada[k]].size();i++)
		{
			
			if(sel[lista[coada[k]][i]] == 0)
			{
				coada[ n++ ]=lista[coada[k]][i];
				sel[coada[n-1]]=sel[coada[k]]+1;
			}
		
		}
		k++;
	}
}
int main()
{
	int i,j,s;
	ifstream f ("bfs.in");
	ofstream g ("bfs.out");
	f>>n>>m>>s;
	vector <int > temp;
	for( int i = 0; i <= n; ++i)
		lista.push_back( temp);
	while (f>>i>>j)
	{
		lista[i].push_back(j);
		//lista[j].push_back(i);
		
	}
	m=n;
	BFS(s);
	for(i=1;i<=m;i++)
	{
		if (i==s)
			g<<0<<" ";
		else
		{
			if (sel[i]==0)
				g<<-1<<" ";
			else
				g<<sel[i] - 1<<" ";
		}
	}	f.close();
	g.close();
	return 0;
}