Pagini recente » Cod sursa (job #318525) | Cod sursa (job #513736) | Cod sursa (job #2513512) | Cod sursa (job #1074799) | Cod sursa (job #2564978)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
const int N = 1e5 + 5, oo = 1e9;
int n, start, d[N];
vector <int> L[N];
void Read ()
{
int m;
ifstream fin ("bfs.in");
fin >> n >> m >> start;
while (m--)
{
int x, y;
fin >> x >> y;
L[x].push_back(y);
}
}
queue <int> q;
void BFS (int start)
{
d[start] = 0;
q.push(start);
while (!q.empty())
{
int vertex = q.front();
q.pop();
for (auto next : L[vertex])
if (d[next] > 1 + d[vertex])
{
d[next] = 1 + d[vertex];
q.push(next);
}
}
}
void Solve ()
{
for (int i = 1; i <= n; i++)
d[i] = oo;
BFS(start);
ofstream fout ("bfs.out");
for (int i = 1; i <= n; i++)
if (d[i] < oo)
fout << d[i] << " ";
else fout << "-1 ";
fout << "\n";
fout.close();
}
int main()
{
Read();
Solve();
return 0;
}