Cod sursa(job #696148)

Utilizator ms-ninjacristescu liviu ms-ninja Data 28 februarie 2012 17:09:49
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
#define dim 1000005
#define inf 0x3f3f3f3f
#define pb push_back
#define mp make_pair
#define fs first
#define sc second
int d[100005], viz[100005],n , m, coada[dim];
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector <int> v[dim];

void bfs(int sursa)
{
	int inc=1, sf=0;
	coada[++sf]=sursa;
	memset(d,inf,sizeof(d));
	d[sursa]=0;
	while(inc<=sf)
	{
		int x=coada[inc];
		viz[x]=1;
		for(int k=0;k<v[x].size();++k)
			if(viz[v[x][k]]==0)
			{
				d[v[x][k]]=d[x]+1;
				coada[++sf]=v[x][k];
			}
		++inc;
	}
}
	
int main()
{
	int i, a, b,s;
	fin>>n >>m >>s;
	for(i=1;i<=m;++i)
	{
		fin>>a >>b;
		v[a].pb(b);
	}
	
	bfs(s);
	for(i=1;i<=n;++i)
		if(d[i]==inf)
			fout<<"-1 ";
		else
			fout<<d[i] <<" ";
	
	return 0;
}