Pagini recente » Cod sursa (job #1273814) | Cod sursa (job #102533) | Cod sursa (job #88432) | Cod sursa (job #1529636) | Cod sursa (job #2682321)
#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;
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);
}