Cod sursa(job #904611)

Utilizator STOLO13FMI-Mocioi Andreie STOLO13 Data 4 martie 2013 17:05:20
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
//Parcurgere_in_latime
#include<fstream>
#include<vector>//biblioteca ce contine vectorul de vectori variabili vec 
#define MAX 100001
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int ap[MAX],nod[MAX],cost[MAX];//nod-coada de noduri; ap-1 daca nodul a fost vizitat sau nu; 
//cost-distanta dintre fiecare nod si nod plecare;
vector <int> vec [MAX];

void BF(int nodPlec){
	memset(cost,-1,sizeof(cost));
	int lungNod=1;//lungNod=lungimea vectorului nod
	nod[lungNod]=nodPlec;
	ap[nodPlec]=1;
	cost[nodPlec]++;
	for(int j=1; j<=lungNod;j++)
		for(int i=0; i<vec[nod[j]].size();i++){
			int nodver=vec[nod[j]][i];//nodver=nodul de verificat-!!pentru usurarea scrierii
			if(!ap[nodver]){
				ap[nodver]=1;
				lungNod++;
				nod[lungNod]=nodver;
				cost[nodver]=cost[nod[j]]+1;
			}
		}
}
				

int main(){
	//cites n=nr moduri, m=nr arce, s=nod plecare
	int n,m,s;
	f>>n>>m>>s;
	//transforma arcele date in vectorul de adiacenta continuta in vec 
	int i,j;
	while(m){
		m--;
		f>>i>>j;
		vec[i].push_back(j);
	}
	BF(s);
	for(int i=1;i<=n;i++)
		g<<cost[i]<<" ";
}