Cod sursa(job #3235171)

Utilizator Cezar2009Cezar Mihai Titihazan Cezar2009 Data 15 iunie 2024 20:49:08
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
//https://infoarena.ro/problema/bfs
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

vector<vector<int>> gr;
vector <int> b;
int n, m;
void bfs(int vf)
{
	queue <int> q;
	int qf;
	
	b.assign(n + 1, -1);
	b[vf] = 0;
	q.push(vf);

	while (!q.empty())
	{
		qf = q.front();
		q.pop();
		for (int xx : gr[qf])
		{
			if (b[xx] == -1)
			{
				b[xx] = b[qf] + 1;
				q.push(xx);
			}
		}
	}
}
int main()
{
	int i, j, x;
	fin >> n >> m >> x;
	//cout << n << " "  << m << " " << x << "\n";
	gr.resize(n + 1);
	for (i = 1; i <= m; ++i)
	{
		int a, b;
		fin >> a >> b;
		//cout << a << " " << b << "\n";
		gr[a].push_back(b);
	}
	bfs(x);
	for (int i = 1; i <= n; ++i)
	{
		fout << b[i] << " ";
	}
	return 0;
}