Cod sursa(job #957093)

Utilizator lucky1992Ion Ion lucky1992 Data 4 iunie 2013 14:43:17
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#include <cstdio>
#include <list>
#include <vector>

using namespace std;

ifstream in("bfs.in");
ofstream out("bfs.out");
int N,M,S,x,y;
	
int main (){
	
	in >> N >> M >> S;
	list<int>  edges[N+1], q;
	vector<int> dist(N+1,-1);
	
	for( int i = 0 ; i < M; i++ ){
		in >> x >> y;
		edges[x].push_back(y);
	}
	
	dist[S]  = 0;
	
	q.push_back(S);
	
	while(!q.empty()){
	
	int u = q.front();
	
	for( auto it = edges[u].begin(); it != edges[u].end(); it++ ){
			
		if( dist[*it] == -1 ){
			dist[*it] = dist[u] + 1;
			q.push_back(*it);
		}
	}
		q.pop_front();
	
	}
	
	
	for( int i = 1; i <= N; i++ )
		out<< dist[i] << " ";
     
     in.close();
     out.close();
     return 0;
}