Pagini recente » Cod sursa (job #410866) | Cod sursa (job #2483374) | Cod sursa (job #3188064) | Cod sursa (job #182421) | Cod sursa (job #2003860)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int main() {
int n, m, s;
cin >> n >> m >> s;
vector< vector< int > > list(n + 1);
for(int i = 1; i <= m; i ++) {
int x, y;
cin >> x >> y;
list[x].push_back(y);
}
vector< int > dist(n + 1, 1 << 30);
dist[s] = 0;
queue< int > q;
q.push(s);
while(!q.empty()) {
int cur = q.front();
for(int x : list[cur]) {
if(dist[x] > dist[cur]) {
q.push(x);
dist[x] = dist[cur] + 1;
}
}
q.pop();
}
for(int i = 1; i <= n; i ++) {
if(dist[i] < (1 << 30))
cout << dist[i] << ' ';
else
cout << "-1 ";
}
}