Cod sursa(job #3005137)

Utilizator 222cezarCezar Stilpeanu 222cezar Data 16 martie 2023 19:40:43
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

#define INF 1e18
#define N 100100
#define pb push_back
#define file "bfs"
#define uint64_t unsigned long long

vector<int> g[N];
int64_t dist[N];
queue<int> q;

int main() {
	freopen(file".in", "r", stdin);
	freopen(file".out", "w", stdout);
	int n, m, s;
	cin >> n >> m >> s;
	for(int i = 1; i <= m; i++) {
		int u, v;
		cin >> u >> v;
		g[u].pb(v);
	}
	for(int i = 1; i <= n; i++) {
		dist[i] = INF;
	}
	dist[s] = 0;
	q.push(s);
	while(!q.empty()) {
		int u = q.front();
		q.pop();
		for(auto v : g[u]) {
			if(dist[v] == INF) {
				dist[v] = 1 + dist[u];
				q.push(v);
			}
		}
	}
	for(int i = 1; i <= n; i++) {
		cout << (dist[i] != INF ? dist[i] : -1) << ' ';
	}
	cout << '\n';
}