Алгоритм Флойда



Дан граф - весовая матрица
Необходимо найти кратчайшие расстояния между всеми парами вершин

Алгоритм работает корректно на графах, не содержащих циклов отриц. веса, кратных рёбер и петель.
Асимптотика O(N3).

Листинг C++

void floyd (vector < vector < int > > &D
            vector < vector < int > > &P)
{
   for (int k = 0; k < n; ++ k)
        for (int i = 0; i < n; ++ i)
            for (int j = 0; j < n; ++ j)
            {
                D[i][j] = min (D[i][j], D[i][k] + D[k][j]);
                P[i][j] = k;
            }
}



По всем вопросам обращаться: rumterg@gmail.com