Pagini recente » Cod sursa (job #2603445) | Cod sursa (job #1561938) | Cod sursa (job #558944) | Cod sursa (job #1121799) | Cod sursa (job #2702544)
#include <bits/stdc++.h>
using namespace std;
#ifndef offline
string nume_problema = "bfs";
ifstream fin(nume_problema + ".in");
ofstream fout(nume_problema + ".out");
#define cin fin
#define cout fout
#endif
int n, m, k, st[100002], viz[100002];
vector<int> v[100002];
void bfs(int n)
{
queue<pair<int, int>> q;
q.push(make_pair(n, 0));
st[n] = 0;
viz[n] = 1;
while (!q.empty())
{
int a, b;
tie(a, b) = q.front();
q.pop();
for (auto i : v[a])
{
if (viz[i])
continue;
viz[i] = 1;
st[i] = b + 1;
q.push(make_pair(i, b + 1));
}
}
}
int main()
{
cin >> n >> m >> k;
for (int i = 1; i <= n; i++)
st[i] = -1;
for (int i = 1; i <= m; i++)
{
int a, b;
cin >> a >> b;
v[a].push_back(b);
}
bfs(k);
for (int i = 1; i <= n; i++)
cout << st[i] << " ";
return 0;
}