#include #include #include using namespace std; typedef double mat5[5][5]; void step(int i, mat5 prev, mat5 next) { for (int r = 0; r < 5; r += 1) for (int c = 0; c < 5; c += 1) next[r][c] = min(prev[r][c], prev[r][i] + prev[i][c]); } void display(int i, mat5 di) { cout << "D" << i << ":\n"; for (int r = 0; r < 5; r += 1) { for (int c = 0; c < 5; c += 1) cout << setw(3) << di[r][c]; cout << "\n"; } cout << "\n\n"; } const double inf = INFINITY; int main() { mat5 d0 = { { 0, 1, 3, inf, inf }, { 1, 0, 1, inf, 7 }, { 3, 1, 0, 1, 3 }, { inf, inf, 1, 0, 1 }, { inf, 7, 3, 1, 0 } }; mat5 d1, d2, d3, d4, d5; step(0, d0, d1); step(1, d1, d2); step(2, d2, d3); step(3, d3, d4); step(4, d4, d5); display(0, d0); display(1, d1); display(2, d2); display(3, d3); display(4, d4); display(5, d5); }