Załóżmy, że nie ma żadnych krawędzi wewnętrznych sol.
Dla każdej krawędzi między węzłem vja i vjot w sol, pozwolić mi[ i , j ] = 1, i mi[ i , j ] = 0jeśli nie ma krawędzi. Obliczaćn × n matryca do[ i , j ] =∑nk = 1mi[ i , k ] ⋅ E.[ k , j ], która podaje liczbę ścieżek dwóch przeskoków między każdą parą węzłów vja i vjot. Następnie dla przewagi międzyvja i vjot w sol obliczać D [ i , j ] = E[ i , j ] ⋅ C.[i,j] inaczej ustawione D[i,j]=∞, co daje liczbę trójkątów, których część stanowi krawędź (lub nieskończoność, jeśli nie ma krawędzi). Mnożenie macierzy potrzebne do obliczeńC koszty O(n3) (można go obliczyć szybciej w zależności od rzadkości G).
Teraz oblicz n×n matryca A, takie że A[i,j]=min(D[i,j],mink(D[i,k]+D[k,j]−E[i,j])). A są wszystkie najkrótsze ścieżki w D o długości do dwóch powiększonych w celu uwzględnienia ścieżek, które biegną wzdłuż dwóch krawędzi jakiegoś trójkąta.
Teraz wystarczy obliczyć najkrótszą ścieżkę pomiędzy vi i vj w G na nowym wykresie A jest (ważoną) macierzą przylegania za pomocą Dijkstry (ponieważ wszystkie masy krawędzi są dodatnie) tj. i określa, czy A∗[i,j]≤k, gdzie A∗ jest zamknięciem tropikalnego semiringu (co daje macierz odległości).