Алгоритм Флойда
Дан граф - весовая матрица
Необходимо найти кратчайшие расстояния между всеми парами вершин
Алгоритм работает корректно на графах, не содержащих циклов отриц. веса, кратных рёбер и петель.
Асимптотика 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