Pagini recente » Cod sursa (job #1199829) | Cod sursa (job #560616) | Cod sursa (job #1099288) | Cod sursa (job #2868709) | Cod sursa (job #2682315)
#include <iostream>
#include <deque>
using namespace std;
// BFS
struct Node {
int n = 0, minim = -1;
deque<int> from;
};
int n, m, s;
deque <Node> nodes;
void Recurs(int i) {
for (int j = 0; j < nodes[i].n; j++) {
int index = nodes[i].from[j];
if (nodes[index].minim > nodes[i].minim + 1 || nodes[index].minim == -1)
nodes[index].minim = nodes[i].minim + 1;
if (index != s)
Recurs(index);
}
}
int main() {
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int i, x, y;
cin >> n >> m >> s;
nodes.resize(n + 1);
for (i = 0; i < m; i++) {
cin >> x >> y;
nodes[x].from.push_back(y);
nodes[x].n++;
}
nodes[s].minim = 0;
Recurs(s);
for (i = 1; i <= n; i++)
cout << nodes[i].minim << ' ';
}