Pagini recente » Cod sursa (job #2562532) | Cod sursa (job #1484710) | Cod sursa (job #1453214) | Cod sursa (job #1892810) | Cod sursa (job #3308539)
#include<iostream>
#include<fstream>
#include<deque>
#include<vector>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int n, m, s;
vector<vector<int>> graph;
vector<int> distances;
void read() {
in>>n>>m>>s;
graph.resize(n);
distances.resize(n, -1);
int a, b;
for (int i=0; i<m; i++){
in>>a>>b;
graph[a-1].push_back(b-1);
}
}
void solve() {
deque<int> q;
q.push_back(s-1);
distances[s-1] = 0;
while(!q.empty()) {
int top = q.front();
q.pop_front();
for (int next: graph[top]) {
if (distances[next] != -1) {
continue;
}
distances[next] = distances[top] + 1;
q.push_back(next);
}
}
for (int i = 0; i < n; i++ ){
out<<distances[i]<<" ";
}
}
int main() {
read();
solve();
return 0;
}