Cod sursa(job #628832)

Utilizator andreea29Iorga Andreea andreea29 Data 2 noiembrie 2011 10:57:34
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
#include<vector>
using namespace std;

vector<int> vmic[100001];
int v[100001], nivel[100001], top, n, m, s;
bool viz[100001];

void BFS()
{
	int i, pr = 0, nrm = 0, x, start = s;
	
	v[nrm] = start;
	viz[s] = true;
	while (pr <= nrm){
		start = v[pr++];
		for (i=0; i<vmic[start].size(); i++)
		{
			x = vmic[start][i];
			if (!viz[x]){
				v[++nrm] = x;
				viz[x] = true;
				nivel[x] = nivel[start] + 1;
			}
		}
	}
	for (i=1; i<=n; i++) 
		if ((i!=s)&&(nivel[i]==0)) 
			nivel[i] = -1;
}


int main()
{
	int i, a, b;
	ifstream f("bfs.in");
	ofstream h("bfs.out");
	f>>n>>m>>s;
	for (i=1; i<=m; i++)
	{
		f>>a>>b;
		vmic[a].push_back(b);
		
	}
	BFS();
	for (i=1; i<=n; i++)
		h<<nivel[i]<<" ";
	
	
	f.close();
	h.close();
	return 0;
}