Cod sursa(job #660595)

Utilizator federerUAIC-Padurariu-Cristian federer Data 13 ianuarie 2012 11:18:25
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream>
#define Nmax 10001
using namespace std;

long long v[Nmax][Nmax], n, m, i, start, x, y;
long long viz[Nmax], cost[Nmax], C[Nmax];
ifstream fin("bfs.in");
ofstream fout("bfs.out");

void BFS()
{
	int ultim, prim;
	ultim=prim=0;
	C[0]=start;
	viz[start]=1;
	while(prim<=ultim)
	{
		x=C[prim++];
		for(i=1;i<=v[x][0];i++)
			if(!viz[v[x][i]])
			{
				viz[v[x][i]]=1;
				C[++ultim]=v[x][i];
				cost[v[x][i]]=cost[x]+1;
			}
	}
}

int main()
{
	fin>>n>>m>>start;
	for(i=1;i<=m;i++)
	{
		fin>>x>>y;
		v[x][++v[x][0]]=y;
	}
	BFS();
	for(i=1;i<=n;i++)
		if(cost[i]==0 && i!=start)
			fout<<-1<<' ';
		else
			fout<<cost[i]<<' ';
	fout<<'\n';
	fin.close();
	fout.close();
	return 0;
}