Pagini recente » Cod sursa (job #1870439) | Cod sursa (job #2428717) | Cod sursa (job #1592502) | Cod sursa (job #427737) | Cod sursa (job #3121508)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
const int N = 1e5;
vector <vector <int>> graph;
queue <int> q;
int drum[N + 1];
void bfs(int nod_start){
q.push(nod_start);
drum[nod_start] = 1;
while(!q.empty()){
int nod = q.front();
q.pop();
for(int vec : graph[nod]){
if(drum[vec] == 0){
drum[vec] = drum[nod] + 1;
q.push(vec);
}
}
}
}
int main()
{
int n, m, start;
cin >> n >> m >> start;
graph.resize(n + 1);
for(int i = 0; i < m; i++){
int a, b;
cin >> a >> b;
graph[a].push_back(b);
}
bfs(start);
for(int i = 1; i <= n; i++){
cout << drum[i] - 1<< ' ';
}
return 0;
}