Cod sursa(job #642466)

Utilizator cippyApetrei Ciprian cippy Data 1 decembrie 2011 14:17:47
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
typedef struct nod* lst; struct nod {int nd; lst next;};
vector<int>vecini[100];
int cost[100];
int viz[100];
int nod,m,n;
void citire(){
	int a,b;
	f>>n>>m;
	for(int i=1;i<=m;i++){
		f>>a>>b;
		vecini[a].push_back(b);
	}
}

void bf(int x){
	cost[1]=x;
	viz[x]=0;
	int el_act=1,ult_el=1,nr;
	while(el_act<=ult_el){
		nod=cost[el_act];
		for(int i=0;i<vecini[nod].size();i++){
			nr=vecini[nod][i];
			if(viz[nr]==0) cost[++ult_el]=nr,viz[nr]+=1;
		}
		el_act++;
	}
}
void df(int x){
	cout<<x<<' ';
	viz[x]=1;
	for(int i=0;i<vecini[nod].size();i++) 
		if(viz[x]==0) df(i);
}


int main(){
	
	f>>nod;
	citire();
	bf(nod);
	for(int i=1;i<=n;i++)
		if(cost[i]!=n) g<<cost[i]-1<<' ';
		else g<<"-1 ";
	g<<endl;

	return 0;
}