Pagini recente » Cod sursa (job #3313532) | Cod sursa (job #3303385) | Cod sursa (job #1612413) | Cod sursa (job #3339959) | Cod sursa (job #3336761)
#include <vector>
#include <queue>
#include <algorithm>
#include <fstream>
using namespace std;
constexpr int N_MAX = 100000 + 1;
int n, m, s, x, y;
int visited[N_MAX], distante[N_MAX], tati[N_MAX];
vector<int> lista_muchii[N_MAX];
void bfs(int src) {
queue<int> coada;
//tati[src] = 0;
distante[src] = 0;
visited[src] = 1;
coada.push(src);
while (coada.size() > 0) {
int c = coada.front();
for (auto&d: lista_muchii[c]) { // adaugam vecinii lui c
if (!visited[d]) {
visited[d] = 1;
coada.push(d);
distante[d] = distante[c] + 1;
}
}
coada.pop(); // il eliminam pe c
}
}
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int main() {
fill_n(distante, N_MAX, -1);
fin >> n >> m >> s;
// citire
for (int i = 0; i < m; i++) {
fin >> x >> y;
lista_muchii[x].push_back(y);
}
bfs(s);
for (int i = 1; i <= n; i++) {
fout << distante[i] << ' ';
}
return 0;
}