Cod sursa(job #2664398)

Utilizator Razvank206Dumitriu Razvan Razvank206 Data 28 octombrie 2020 16:26:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb

#include <iostream>
#include <vector>
#include <queue>
#include <fstream>

using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

int n, m, s, d[100005],a,b;
vector <int> vect[100005];
queue <int> que;

void bfs(int start) {

	que.push(start);

	while (!que.empty())
    {
		int k = que.front();

		que.pop();

		for (int i = 0; i < vect[k].size(); i++)

			if (d[vect[k][i]] == 0)

                if(vect[k][i] != start)

                {
                    que.push(vect[k][i]);

                    d[vect[k][i]] = d[k] + 1;
                }
	}
}

int main()
{

	f >> n >> m >> s;

	for (int i = 1; i <= m; i++)
	{
		f >> a >> b;

		vect[a].push_back(b);
	}

	bfs(s);

	for (int i = 1; i <= n; i++)

		if (d[i] == 0 && i != s)

            g << -1 << " ";

        else

            g << d[i] << " ";

}