Pagini recente » Cod sursa (job #731312) | Cod sursa (job #540044) | Cod sursa (job #36618) | Cod sursa (job #1824641) | Cod sursa (job #3335765)
#include <bits/stdc++.h>
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
using data = unsigned short;
int main()
{
data startingNode, nodeNum, edgeNum, x, y;
fin>>nodeNum>>edgeNum>>startingNode;
std::vector<std::vector<data>> graph(nodeNum + 1);
std::vector<short> distance(nodeNum, -1);
std::queue<data> q;
while (fin>>x>>y)
graph[x].push_back(y);
q.push(startingNode);
distance[startingNode - 1] = 0;
while (!q.empty())
{
data node = q.front();
data dist = distance[node - 1] + 1;
for (data neighbours : graph[node])
if (distance[neighbours - 1] == -1)
{
q.push(neighbours);
distance[neighbours - 1] = dist;
}
q.pop();
}
for (short dist : distance)
fout<<dist<<' ';
fin.close();
fout.close();
return 0;
}