¿Por qué no usas el algoritmo de Dijsktra?, existen muchas implementaciones en la red, pero si tienes dudas me lo dices para mandarte una implementación del mismo, le pasas un nodo y te calcula el camino más corto de ese nodo a los demás. Tal vez puedas utilizar también el Floyd, pero te calcula la distancia más corta entre todos los nodos.
Saludos.