Pagini recente » Cod sursa (job #2673046) | Cod sursa (job #2442766)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
using namespace std;
int n, m, s, dist[100005],a,b;
vector <int> v[100005];
queue <int> q;
void bfs(int start) {
q.push(start);
while (!q.empty()) {
int k = q.front();
q.pop();
for (int i = 0; i < v[k].size(); i++)
if (dist[v[k][i]] == 0 && v[k][i] != start) { q.push(v[k][i]); dist[v[k][i]] = dist[k] + 1; }
}
}
int main()
{
ifstream cin("bfs.in");
ofstream cout("bfs.out");
cin >> n >> m >> s;
for (int i = 1; i <= m; i++)
{
cin >> a >> b;
v[a].push_back(b);
}
bfs(s);
for (int i = 1; i <= n; i++)
if (dist[i] == 0 && i != s) cout << -1 << " "; else cout << dist[i] << " ";
}