Мне нужно написать алгоритм поиска кратчайшего пути в невзвешенном графике. Я узнал, что лучший способ найти кратчайший путь в невзвешенном графике - просто выполнить BFS и остановиться, как только цель будет достигнута. Проблема в том, что я не знаю, как отслеживать путь, который привел к этому месту назначения.Кратчайший путь с использованием BFS в C++
До сих пор я думал о создании нового списка путей для каждого обнаруженного нового узла, но я не могу понять, как его реализовать.
Этот код, кажется, работает до сих пор, как посещение каждый узел идет (это немного сумбурно, извините):
void shortestPath(string start, string finish, list< list<string> > adjList){
queue< list< list<vertex*> >::iterator > myQueue;
list< list<vertex*> > listVertices = initializeVertices(start, adjList);
list< list<vertex*> >::iterator aux = extractList(start, listVertices);
myQueue.push(aux);
while(myQueue.size() > 0){
list< list<vertex*> >::iterator vert = myQueue.front();
for(list<vertex*>::iterator it = vert->begin(); it != vert->end(); it++){
if((*it)->color == "white"){
(*it)->color = "gray";
myQueue.push(extractList((*it)->name, listVertices));
}
}
list<vertex*>::iterator vertAux = vert->begin();
(*vertAux)->color = "black";
myQueue.pop();
}
}
Любые идеи?