Cod sursa(job #1890546)

Utilizator medicinedoctoralexandru medicinedoctor Data 23 februarie 2017 12:33:18
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <vector>

using namespace std;

vector <vector <int> > a;
vector <int> d;
int q;

void read()
{
	int n, m;
	ifstream f("bfs.in");

	f >> n >> m >> q ;
	a.resize(n+1);
	d.resize(n+1);

	for (int i = 0, x, y; i < m; i++)
	{
		cin >> x >> y ;
		if (x != y)
			a[x].push_back(y);
	}
	fill(d.begin(), d.end(), -1);
	d[q] = 0;

	f.close();
}

void solve()
{
	vector <int> x;
	int c;
	x.push_back(q);

	for (int i = 0; i < x.size(); i++)
		for (int j = 0; j < a[ x[i] ].size(); j++)
		{
			c = a[ x[i] ][j];
			if ( d[c] == -1)
			{
				x.push_back(c);
				d[c] = d[ x[i] ] + 1;
			}
		}
}

void write()
{
	ofstream f("bfs.out");
	
	for (int i = 1; i < d.size(); i++)
		f << d[i] << ' ';
	
	f.close();
}

int main()
{
	read();

	solve();

	write();

	return 0;
}