Cod sursa(job #1388815)

Utilizator AlexandraaaaMereu Alexandra Alexandraaaa Data 15 martie 2015 19:00:26
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

vector <int> G[100];
void bf(int v, int s, int viz[]) {
	int i, j, grad[100];
	for (i = 1; i <= v; i++) {
		grad[i] = G[i].size();
	}
	queue <int> Coada;
	viz[s] = 1;
	cout << s << " ";
	for (i = 0; i < grad[s]; i++) 
		if (viz[G[s][i]] == 0) {
			Coada.push(G[s][i]);
			viz[G[s][i]] = 1;
		}
	while (!Coada.empty()) {
		j = Coada.front();
		Coada.pop();
		cout << j << " ";
		for (i = 0; i < grad[j]; i++)
			if (viz[G[j][i]] == 0) {
				Coada.push(G[j][i]);
				viz[G[j][i]] = 1;
			}
	}
	for (i = 1; i <= v; i++) 
		if (viz[i] == 0) bf(v, i, viz);
}

int main()
{
	int i, v, e, x, y, s, viz[100];
	ifstream f("BF.in");
	f >> v >> e >> s;
	for (i = 1; i <= e; i++) {
		f >> x >> y;
		G[x].push_back(y);
		viz[i] = 0;
	}
	bf(v, s, viz);
	f.close();
	cin.get();
  return 0;
}