Cod sursa(job #1607397)

Utilizator krityxAdrian Buzea krityx Data 21 februarie 2016 02:26:13
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <queue>
#include <vector>

using namespace std;

void bfs(int nod, vector<vector<int>> G, int N)
{
	queue<int> q;
	vector<int> level;
	level.resize(N + 1, -1);
	q.push(nod);
	level[nod] = 0;
	while (!q.empty())
	{
		nod = q.front();
		q.pop();
		for (vector<int>::iterator it = G[nod].begin(); it != G[nod].end(); it++)
		{
			if (level[*it] == -1)
			{
				q.push(*it);
				level[*it] = level[nod] + 1;
			}
		}
	}

	ofstream g("bfs.out");
	for (size_t i = 1; i <= N; i++)
	{
		g << level[i] << " ";
	}
	g.close();


}

int main()
{
	vector<vector<int>> G;
	int N, M, S, x, y;
	ifstream f("bfs.in");
	f >> N >> M >> S;
	G.resize(N + 1);
	for (int i = 1; i <= M; i++)
	{
		f >> x >> y;
		G[x].push_back(y);
	}
	f.close();

	bfs(S, G, N);

	return 0;
}