Pagini recente » Cod sursa (job #2086871) | Cod sursa (job #2015058) | Monitorul de evaluare | Cod sursa (job #3239116) | Cod sursa (job #3314213)
// https://www.infoarena.ro/problema/bfs - Szucs Patrik - Kevin
#include <fstream>
#include <queue>
#include <vector>
int main()
{
int n, m, s;
std::ifstream in("bfs.in");
in >> n >> m >> s;
std::vector<std::vector<int>> graf(n);
for (int i = 0; i < m; i++)
{
int a, b;
in >> a >> b;
graf[a - 1].push_back(b - 1);
}
in.close();
std::queue<int> sor;
std::vector<int> indx(n, -1);
sor.push(s - 1);
indx[s - 1] = 0;
while (!sor.empty())
{
int curr = sor.front(); // utoljara berakott elem - 1
sor.pop();
for (int i : graf[curr])
if (indx[i] == -1)
{
indx[i] = indx[curr] + 1;
sor.push(i);
}
}
std::ofstream out("bfs.out");
for (auto &elem : indx)
out << elem << " ";
out.close();
return 0;
}