Cod sursa(job #908710)

Utilizator drobertDumitru Robert drobert Data 9 martie 2013 22:13:59
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f( "bfs.in" );
ofstream g( "bfs.out" );
int N,M,S,i,j,NrVec[100001];
int Coada[100001],Dist[100001],Total,X,Y;
vector <int> Vec[100001];
int main (){
	f>>N>>M>>S;
	for ( i=1;i<=M;i++ ) {
		f>>X>>Y;
		Vec[X].push_back(Y);
	}
	for ( i=1;i<=N;i++ ) {
		NrVec[i]=Vec[i].size();
		Dist[i]=-1;
	}
	Total=1;
	Dist[S]=0;
	Coada[1]=S;
	for ( i=1;i<=Total;i++ )
		for ( j=0;j<NrVec[Coada[i]];j++ )
			if ( Dist[Vec[Coada[i]][j]]==-1 ) {
				Dist[Vec[Coada[i]][j]]=Dist[Coada[i]]+1;
				Coada[++Total]=Vec[Coada[i]][j];
			}
	for ( i=1;i<=N;i++ )
		g<<Dist[i]<<" ";
}