Witam!
Proszę o pomoc w rozwiązaniu pewnego problemu. Otóż musiałem napisać program który znajduje najkrótszą ścieżkę w grafie skierowanym dla dwóch wierzchołków połączonych przez k-tą co do wielkości krawędź. Kiedy owa k-ta krawędź została(koniecznie za pomocą algorytmu "magiczne piątki") znaleziona należało wyliczyć najkrótszą ścieżkę między wierzchołkami które łączy krawędź w taki sposób że szukamy z punktu a ->b oraz b->a za pomocą algorytmu Dijkstry.
I teraz tu jest problem bo program ma działać w czasie O(|V| * |V|), gdzie V oznacza zbiór wierzchołków grafu. Wg moich teorii za nic nie mogę osiągnąć takiego wyniku. Bo tak: algorytm "magicznych piątek" działa w czasie liniowym, a że szukaliśmy krawędzi to będzie wynosił O(|E|), gdzie E oznacza zbiór krawędzi. Algorytm Dijkstry wykonujemy 2 razy i czasie O(|E| * log |V|) co daje złożoność końcową O(|E| + |E| * log |V|).
Na pewno musiałem popełnić gdzieś błąd albo przyjąć nieprawdziwe założenia podczas liczenia złożoności, więc proszę w wskazanie tego miejsca i wyjaśnienie dlaczego tak a nie inaczej. Sprawa jest dość paląca i nie ukrywam ze zależy mi na czasie.
Z góry dziękuję i pozdrawiam