Припустимо, що в ньому немає саморізів G.
Для кожного краю між вузлом vi і vj в G, дозволяє E[i,j]=1, і E[i,j]=0якщо немає краю. Обчислитиn×n матриця C[i,j]=∑nk=1E[i,k]⋅E[k,j], яка дає кількість шляхів з двома скачками між кожною парою вузлів vi і vj. Потім для краю міжvi і vj в G обчислити D[i,j]=E[i,j]⋅C[i,j] інакше встановити D[i,j]=∞, який дає кількість трикутників, край є частиною (або нескінченності, якщо немає краю). Матричне множення, необхідне для обчисленняC витрати O(n3) (можна обчислити швидше, залежно від рідкості G).
Тепер обчислити n×n матриця A, такий як A[i,j]=min(D[i,j],mink(D[i,k]+D[k,j]−E[i,j])). A це всі найкоротші шляхи в D довжиною до двох збільшених для обліку шляхів, які йдуть по двох краях якогось трикутника.
Тепер просто обчисліть найкоротший шлях між ними vi і vj в G на новій графіці якої A є (зваженою) матрицею суміжності, використовуючи Dijkstra (оскільки всі крайові ваги є позитивними), тобто визначають, чи A∗[i,j]≤k, де A∗ - це замикання над тропічним семірінгом (що дає матрицю відстані).