Pagini recente » Cod sursa (job #2644757) | Cod sursa (job #101541) | Cod sursa (job #2300733) | Cod sursa (job #963582) | Cod sursa (job #3138230)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector<int> a[100005];
int d[100005], n, m, s;
queue<int> q;
int main()
{
int i, j;
fin >> n >> m >> s;
while (m--)
{
fin >> i >> j;
a[i].push_back(j);
}
for (i = 1; i <= n; i++)
d[i] = 2e9;
q.push(s);
d[s] = 0;
while (!q.empty())
{
s = q.front();
q.pop();
for (int e : a[s])
if (d[e] > d[s] + 1)
{
d[e] = d[s] + 1;
q.push(e);
}
}
for (i = 1; i <= n; i++)
if (d[i] == 2e9) fout << "-1 ";
else fout << d[i] << " ";
return 0;
}