Pagini recente » Cod sursa (job #581753) | Cod sursa (job #18061) | Cod sursa (job #637531) | Cod sursa (job #433064) | Cod sursa (job #2682324)
#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;
Recurs(index);
}
}
}
int main() {
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int i, x, y;
scanf("%d %d %d", &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++)
printf("%d ", nodes[i].minim);
}