Pagini recente » Cod sursa (job #1216362) | Cod sursa (job #1611613) | Cod sursa (job #1515975) | Cod sursa (job #2052683) | Cod sursa (job #2842934)
#include <deque>
#include <iostream>
#include <vector>
typedef long long ll;
using namespace std;
struct data {
bool seen = false;
ll distance = -1;
vector<ll> sz;
};
int main() {
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
ll n, m, source;
cin >> n >> m >> source;
vector<data> g(n + 1);
for (ll i = 1; i <= m; ++i) {
ll a, b;
cin >> a >> b;
g[a].sz.push_back(b);
}
deque<ll> q;
q.push_back(source);
g[source].seen = true;
g[source].distance = 0;
while (!q.empty()) {
ll current = q[0];
q.pop_front();
for (ll &el : g[current].sz) {
if (g[el].seen == false) {
g[el].seen = true;
g[el].distance = g[current].distance + 1;
q.push_back(el);
}
}
}
for (int i = 1; i <= n; i++) {
cout << g[i].distance << " ";
}
return 0;
}