Pagini recente » Cod sursa (job #824152) | Cod sursa (job #702030) | Cod sursa (job #2472652) | Cod sursa (job #1856539) | Cod sursa (job #2842913)
#include <deque>
#include <iostream>
#include <vector>
typedef long long ll;
using namespace std;
int main() {
ios::sync_with_stdio(0);
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdin);
ll n, m, source;
cin >> n >> m >> source;
vector<vector<ll>> graph(n + 1, vector<ll>());
vector<ll> solve(n + 1, -1);
vector<bool> visited(n + 1, false);
for (ll i = 0; i < m; ++i) {
ll a, b;
cin >> a >> b;
graph[a].push_back(b);
}
deque<pair<ll, ll>> q;
q.push_front({source, 0});
visited[source] = true;
while (!q.empty()) {
pair<ll, ll> current = q[0];
solve[current.first] = current.second;
q.pop_front();
for (ll &el : graph[current.first]) {
if (!visited[el]) {
visited[el] = true;
q.push_back({el, current.second + 1});
}
}
}
for (int i = 1; i <= n; ++i) {
cout << solve[i] << " ";
}
return 0;
}