да, используйте алгоритм кратчайшего пути Джикстры:
1) Создайте набор sptSet (набор дерева кратчайшего пути), который отслеживает вершины, включенные в дерево кратчайшего пути, т. Е. Минимальное расстояние от источника которого рассчитывается, и завершена. Первоначально этот набор пуст.
2) Присвойте значение расстояния всем вершинам входного графа. Инициализируйте все значения расстояния как БЕСКОНЕЧНЫЙ. Присвойте значение расстояния 0 для исходной вершины, чтобы она выбиралась первой.
3) Хотя sptSet не включает в себя все вершины
… .a) Выберите вершину u, которой нет в sptSet и имеет минимальное значение расстояния.
… .b) Включить u в sptSet.
…. c) Обновить значение расстояния всех смежных вершин u. Чтобы обновить значения расстояния, выполните итерацию по всем смежным вершинам. Если для каждой смежной вершины v сумма значений расстояния u (от источника) и веса ребра uv меньше значения расстояния v, обновите значение расстояния v.