Pagini recente » Cod sursa (job #357500) | Cod sursa (job #3224418) | Cod sursa (job #2940226) | Cod sursa (job #1038377) | Cod sursa (job #2330938)
#include <algorithm>
#include <fstream>
#include <iterator>
#include <queue>
#include <vector>
std::vector<int> bfs(const int source, const std::vector<std::vector<int>> &G)
{
std::vector<int> D(G.size(), -1);
std::queue<int> Q;
D[source] = 0;
Q.push(source);
while (!Q.empty())
{
int u = Q.front();
Q.pop();
for (const auto v : G[u])
if (D[v] == -1)
{
D[v] = D[u] + 1;
Q.push(v);
}
}
return D;
}
int main()
{
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
int n, m, s;
fin >> n >> m >> s;
int u, v;
std::vector<std::vector<int>> G(n, std::vector<int>());
while (m--)
{
fin >> u >> v;
G[u - 1].push_back(v - 1);
}
auto D = bfs(s - 1, G);
std::copy(D.begin(), D.end(), std::ostream_iterator<int>(fout, " "));
fout << '\n';
return 0;
}