Pagini recente » Cod sursa (job #693881) | Cod sursa (job #702573) | Cod sursa (job #2415782) | Cod sursa (job #110175) | Cod sursa (job #2423863)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
int main(){
ifstream cin ("bfs.in");
ofstream cout ("bfs.out");
int n, m, start; cin >> n >> m >> start;
vector<vector<int>> edge(n);
for(int i = 0; i < m; i++){
int a, b; cin >> a >> b;
edge[a - 1].push_back(b - 1);
}
queue<int> Q; Q.push(start - 1);
vector<int> dist(n, -1); dist[start - 1] = 0;
while(!Q.empty()){
int now = Q.front();
Q.pop();
for(auto i : edge[now])
if (dist[i] == -1){
dist[i] = dist[now] + 1;
Q.push(i);
}
}
for(int i = 0; i < n; i++)
cout << dist[i] << ' ';
cout << '\n';
return 0;
}