Pagini recente » Cod sursa (job #2710472) | Cod sursa (job #3259638) | Cod sursa (job #2926304) | Cod sursa (job #987781) | Cod sursa (job #2908513)
#include <bits/stdc++.h>
#define NMAX 100010
using namespace std;
int n, m;
vector <int> d(NMAX, INT_MAX);
vector <int> adj[NMAX];
void bfs (int source) {
d[source] = 0;
queue <int> Q;
Q.push(source);
while (!Q.empty()) {
int node = Q.front();
Q.pop();
for (auto neigh : adj[node]) {
if (d[node] + 1 < d[neigh]) {
d[neigh] = d[node] + 1;
Q.push(neigh);
}
}
}
for (int node = 1; node <= n; node++) {
if (d[node] == INT_MAX) {
d[node] = -1;
}
}
}
int main() {
ifstream cin ("bfs.in");
ofstream cout ("bfs.out");
int source;
cin >> n >> m >> source;
for (int i = 1, x, y; i <= m; i++) {
cin >> x >> y;
adj[x].push_back(y);
}
bfs(source);
for (int node = 1; node <= n; node++) {
cout << d[node] << " ";
}
cout << "\n";
}