Cod sursa(job #633803)

Utilizator informatician28Andrei Dinu informatician28 Data 14 noiembrie 2011 21:25:06
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream> 
#include<vector> 
#include<queue>
#define NMax 100005
using namespace std; 
ifstream in("bfs.in"); 
ofstream out("bfs.out");

int N, S, L[NMax], viz[NMax];
vector <int> G[NMax];
queue <int> Q;


void Read() 
{int M,X,Y;  
	in>>N>>M>>S; 
	for( ;M>0;--M) 
	{ 
		in>>X>>Y;               
		G[X].push_back(Y);  
	}
}

void BFS(int Start) 
{  int prec;  
	Q.push(Start); 
	viz[Start]=1;
	
	while(!Q.empty()) 
	{ 
		prec=Q.front();     
		Q.pop(); 
		viz[prec]=1;
		for(unsigned v=0; v<G[prec].size(); v++) 
		{ 
			int V=G[prec][v];
			if(!viz[V]) 
			{ 
				viz[V]=1; 
				L[V]=L[prec]+1; 
				Q.push(V); 
			}
		}
	}
}		

void Print() 
{ 
	for(int i=1;i<=N;i++) 
	{
		if(!viz[i]) 
			L[i]=-1; 
        out<<L[i]<<" ";		
	}
}	

int main() 
{ Read();
BFS(S);
Print(); 
}