Cómo encontrar la ruta más corta en un gráfico no ponderado en lenguaje C

Se garantiza que BFS encontrará la ruta más corta entre el nodo inicial y todos los nodos que visita (si esa ruta existe). Por lo tanto, el nodo de inicio debe ser uno de los nodos entre los que desea encontrar la ruta más corta. Llamemos al otro punto final de la ruta ‘nodo final’.

El código de la descripción necesita solo una pequeña modificación … en lugar de establecer visit [u] en 1, configúrelo en el índice del nodo desde el que lo visitó. Esto es para poder reconstruir el camino. Además, puede detenerse después de llegar al otro punto final de la ruta, por lo que debe pasarse como un parámetro y verificarse al visitar un nuevo nodo; esto no es absolutamente necesario.

Finalmente, deberá agregar un bloque para reconstruir la ruta desde la matriz de visitas, donde almacenamos los índices de los predecesores. Comenzando desde el nodo final, volvemos al nodo de inicio:

path.prepend (visita [endnode]);
while (visit [path.last ()]! = startnode) {
path.prepend (visita [path.last ()]);
}