Pagini recente » Cod sursa (job #2374198) | Cod sursa (job #2739835) | Cod sursa (job #2615226) | Cod sursa (job #1370425) | Cod sursa (job #2764724)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
#define DIM 100001
vector <int> v[DIM];
int n, m, nod, sel[DIM], x, y, dist[DIM];
static inline void bfs() {
queue<int> q;
sel[nod] = 1;
q.push(nod);
dist[nod] = 0;
while(!q.empty()) {
int k = q.front();
q.pop();
for(auto e : v[k])
if(sel[e] == 0) {
sel[e] = 1;
dist[e] = dist[k] + 1;
q.push(e);
}
}
}
int main() {
cin >> n >> m >> nod;
for(int i = 1; i <= m; i++) {
cin >> x >> y;
v[x].push_back(y);
}
for(int i = 1; i <= n; i++)
dist[i] = -1; ///marchez unde nu pot ajunge;
bfs();
for(int i = 1; i <= n; i++)
cout << dist[i] << " ";
return 0;
}