Cod sursa(job #2844892)

Utilizator mousecanaalex mouse mousecana Data 5 februarie 2022 22:50:18
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("test.in");
ofstream out("test.out");

vector <int> v[100005];
int lungimi[100005]; // lungimea min pana la i
bool vizitat[100005];
int n, m, s;

void bfs(int s) {
	queue <int> q;
	lungimi[s] = 0;
	q.push(s);
	while (!q.empty()) {
		int nod = q.front();
		vizitat[nod] = 1;
		for (int i = 0; i < v[nod].size(); i++) {
			if (!vizitat[v[nod][i]]) {
				q.push(v[nod][i]);
				lungimi[v[nod][i]] = lungimi[nod] + 1;
			}
		}
		q.pop();
	}
}

int main() {
	in >> n >> m >> s;
	for (int i = 1; i <= m; i++) {
		int x, y;
		in >> x >> y;
		v[x].push_back(y);
	}
	bfs(s);
	for (int i = 1; i <= n; i++) {
		if (lungimi[i] or i == s)
			cout << lungimi[i] << " ";
		else
			cout << "-1 ";
	}
}