Cod sursa(job #2442766)

Utilizator RaduhhRadu Flocea Raduhh Data 25 iulie 2019 11:31:14
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>

using namespace std;

int n, m, s, dist[100005],a,b;
vector <int> v[100005];
queue <int> q;

void bfs(int start) {
	q.push(start);
	while (!q.empty()) {
		int k = q.front();
		q.pop();
		for (int i = 0; i < v[k].size(); i++)
			if (dist[v[k][i]] == 0 && v[k][i] != start) { q.push(v[k][i]); dist[v[k][i]] = dist[k] + 1; }
	}
}

int main() 
{
	ifstream cin("bfs.in");
	ofstream cout("bfs.out");
	cin >> n >> m >> s;
	for (int i = 1; i <= m; i++)
	{
		cin >> a >> b;
		v[a].push_back(b);
	}
	bfs(s);
	for (int i = 1; i <= n; i++)
		if (dist[i] == 0 && i != s) cout << -1 << " "; else cout << dist[i] << " ";
}