Pagini recente » Cod sursa (job #2667922) | Cod sursa (job #3318443) | Cod sursa (job #1012374) | Cod sursa (job #2848392) | Cod sursa (job #3320248)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
void BFS(int s, vector<int> &viz, vector<vector<int> > &L, vector<int> &d) {
queue<int> coada;
coada.push(s);
viz[s] = 1;
d[s] = 0;
while (coada.size() > 0) {
int u = coada.front();
coada.pop();
for (auto vecin: L[u]) {
if (viz[vecin] == 0) {
coada.push(vecin);
viz[vecin] = 1;
d[vecin] = d[u] + 1;
}
}
}
}
int main() {
ifstream f("bfs.in");
ofstream g("bfs.out");
int n, m, x, y, s;
f >> n >> m >> s;
vector<vector<int> > L(n + 1);
vector<int> d(L.size(), -1), viz(n + 1, 0);
for (int i = 0; i < m; i++) {
f >> x >> y;
L[x].push_back(y);
}
BFS(s, viz, L, d);
for (int i = 1; i <= n; i++) {
g << d[i] << " ";
}
return 0;
}