Cod sursa(job #650596)

Utilizator cippyApetrei Ciprian cippy Data 18 decembrie 2011 15:20:14
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <vector>
#include <fstream>
#define maxn 100010
using namespace std;
vector<int>vecini[maxn];
int lista[maxn];
int cost[maxn];
int x,m,n;
void citire(){
	ifstream f("bfs.in");
	int a,b;
	f>>n>>m>>x;
	for(int i=1;i<=m;i++){
		f>>a>>b;
		vecini[a].push_back(b);
	}
	f.close();
}
void init(){
	for(int i=0;i<=n;i++)
		cost[i]=-1;
}
void bf(){
	lista[1]=x;
	cost[x]=0;
	int el_act=1,ult_el=1,nr,nod;
	while(el_act<=ult_el){
		nod=lista[el_act];
		for(unsigned int i=0;i<vecini[nod].size();i++){
			nr=vecini[nod][i];
			if(cost[nr]==-1) {
				lista[++ult_el]=nr;
				cost[lista[ult_el]]=cost[nod]+1;
			}
		}
		el_act++;
	}
}
int main(){
	
	citire();
	init();
	bf();
	ofstream g("bfs.out");
	for(int i=1;i<=n;i++)
		g<<cost[i]<<' ';
	g.close();

	return 0;
}