Cod sursa(job #2702544)

Utilizator VasAlexVasiluta Alex VasAlex Data 4 februarie 2021 15:06:19
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
using namespace std;
#ifndef offline
string nume_problema = "bfs";
ifstream fin(nume_problema + ".in");
ofstream fout(nume_problema + ".out");
#define cin fin
#define cout fout
#endif
int n, m, k, st[100002], viz[100002];
vector<int> v[100002];

void bfs(int n)
{
	queue<pair<int, int>> q;
	q.push(make_pair(n, 0));
	st[n] = 0;
	viz[n] = 1;
	while (!q.empty())
	{
		int a, b;
		tie(a, b) = q.front();
		q.pop();
		for (auto i : v[a])
		{
			if (viz[i])
				continue;
			viz[i] = 1;
			st[i] = b + 1;
			q.push(make_pair(i, b + 1));
		}
	}
}

int main()
{
	cin >> n >> m >> k;
	for (int i = 1; i <= n; i++)
		st[i] = -1;
	for (int i = 1; i <= m; i++)
	{
		int a, b;
		cin >> a >> b;
		v[a].push_back(b);
	}
	bfs(k);
	for (int i = 1; i <= n; i++)
		cout << st[i] << " ";
	return 0;
}