Я думаю, что ответ на вопрос неправ.
В описании и анализе более быстрого алгоритма.
Вы не можете найти самый дешевый маршрут от вершины u до этого предка в O (h), поэтому этот алгоритм не O (h). По двум причинам, если внутренние узлы имеют только родительское дочернее направленное ребро, нам нужно смотреть вниз от u, чтобы найти самый дешевый маршрут к общему предку (или к корню), и я не знаю об алгоритме, который может это сделать. Вторая причина, если имеются родительские ребра parent-> child и child-> parent, то путь от исходной вершины до наименьшей общей вершины предка может быть через любую из трех смежных вершин любых внутренних узлов дерева (вершины) или одной смежной вершины (корень) любой вершины вершины листа, поэтому мы не можем сделать это в O (h).
Основываясь на моем понимании проблемы, дочерний-> родительский край не находится в определении циклического дерева. Поэтому нам нужно только спуститься по дереву и вернуться наверху, а от корня к цели - простой простой путь. Поэтому мы уменьшаем проблему до нахождения самого дешевого маршрута от u до корня, тем самым уменьшая сложность.
Кроме того, если цель является прямым потомком источника, мы остановимся при поиске самого дешевого маршрута для root. если источником является корень, проблема тривиальна, поскольку маршрут - это простой единственный путь от корня к цели, спустив поддеревья цели.
Было бы лучше, если бы вы описали то, что вы пробовали, или любые начальные мысли – vefthym