Pagini recente » Cod sursa (job #941476) | Cod sursa (job #532612) | Cod sursa (job #1035255) | Cod sursa (job #517890) | Cod sursa (job #2964621)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
string file = "bfs";
ifstream cin (file + ".in");
ofstream cout (file + ".out");
vector <int> d, L[100001];
queue <int> Q;
int n;
void BFS(int S)
{
Q.push(S);
d.resize(n + 1, -1);
d[S] = 0;
while (!Q.empty())
{
int x = Q.front();
Q.pop();
for (int y : L[x])
{
if (d[y] == -1)
{
d[y] = d[x] + 1;
Q.push(y);
}
}
}
}
int main()
{
int m, S, x, y;
cin >> n >> m >> S;
while (m)
{
cin >> x >> y;
m--;
L[x].push_back(y);
}
BFS(S);
for (int i = 1; i <= n; i++)
cout << d[i] << ' ';
}