Cod sursa(job #2709200)

Utilizator masterXbotmasterX masterX Data 19 februarie 2021 23:17:20
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int noduriMax = 200000;
int n, m, s;
vector <int> muchii[noduriMax];
bool used[noduriMax];
int distanta[noduriMax];

void bfs(int nod)
{
	queue <int> q;
	q.push(nod);
	while (!q.empty())
	{
		int curent = q.front();
		q.pop();
		used[curent] = true;
		for (int i = 0; i < muchii[curent].size(); ++i)
		{
			int vecin = muchii[curent][i];
			if (used[vecin] == false)
			{
				q.push(vecin);
				distanta[vecin] = distanta[curent] + 1;
			}
		}
	}
}

int main()
{
	fin >> n >> m >> s;
	for (int i = 1; i <= m; ++i)
	{
		int x, y;
		fin >> x >> y;
		muchii[x].push_back(y);
	}

	bfs(s);
	for (int i = 1; i <= n; ++i)
	{
		if (distanta[i] == 0 && i != s)
			fout << -1 << ' ';
		else
			fout << distanta[i] << ' ';
	}
}