Поиск кратчашего пути в ненагруженном неорграфе от любой вершины до любой

Задача: необходимо найти кратчайший путь в ненагруженном неорграфе от любой вершины до любой.

Соображения: алгоритм Флойда не годится (О(n^3) - много). Общая идея - построение остовного дерева и определение пути с помощью оного. Кратчайший путь в данном случае находится с помощью глубинного обхода (вершина, от которой считается расстояние, объявляется корнем остовного дерева).

Просьба: скинуть код, если подобная задачка уже встречалась. Если нет таковой возможности - обрисовать идею программы поподробнее.