Cod sursa(job #680543)

Utilizator Oancea.CatalinOancea Catalin Oancea.Catalin Data 15 februarie 2012 18:52:20
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
#include<list>
#include<stdio.h>
using namespace std;
#define IN "bfs.in"
#define OUT "bfs.out"
#define MaxN 100050
fstream f(IN, ios::in), g(OUT, ios::out);
list<long> a[MaxN];
list<long>::iterator it;
int x, y, n, m, i, cnt=0;
int viz[MaxN], s;
void BFS(int start)
{
	int p, u, coada[MaxN];
	p=u=1;
	coada[1]=start;
	viz[start]=0;
	while(p<=u)
	{
		for(it=a[start].begin(); it!=a[start].end(); it++)
		{
			if(viz[*it]==-1)
			{
				viz[*it]=viz[start]+1;
				u++;
				coada[u]=*it;
			}
		}
		p++;
		start=coada[p];
	}
}
int main()
{
	f>>n>>m>>s;
	for(i=1; i<=m; i++)
	{
		f>>x>>y;
		if(x!=y)
			a[x].push_back(y);
	}
	for(i=1; i<=n; i++)
		viz[i]=-1;

	BFS(s);

	for(i=1; i<=n; i++)
		g<<viz[i]<<" ";
	return 0;
}