Pagini recente » Cod sursa (job #450926) | Cod sursa (job #1468272) | Cod sursa (job #3254917) | Cod sursa (job #2711723) | Cod sursa (job #3160078)
#include "B.h"
std::vector<std::vector<int>> liste = MakeList("bfs.in", false);
int numNodes = liste.size();
std::vector<bool> viz(numNodes, false); // vector de vizitati
std::vector<int> tata(numNodes, 0); // vector de tati
std::vector<int> d(numNodes, -1); //vector de distante
void BFS(int s)
{
std::queue<int> C;
C.push(s);
viz[s-1] = true;
d[s-1] = 0;
while (!C.empty())
{
int i = C.front();
C.pop();
//std::cout << i << '\n'; //afis nodul vizitat
for (auto& j : liste[i-1])
{
if (!viz[j - 1])
{
C.push(j);
viz[j - 1] = true;
tata[j - 1] = i;
d[j - 1] = d[i - 1] + 1;
}
}
}
}
int main()
{
std::ifstream in("bfs.in");
std::ofstream out("bfs.out");
int s;
for (int i = 0; i < 3; i++)
{
in >> s;
}
in.close(); //am aflat nodul de start si am inchis fisierul
BFS(s);
for (auto& i : d)
{
out << i << ' ';
}
out.close();
return 0;
}