Добавил:
yermolenkoigor9
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Diskret / Graf_Floid / main
.cpp/*
* File: main.cpp
* Author: Игорь
*
* Created on 22 ноября 2018 г., 16:37
*/
#include <cstdlib>
#include <iostream>
#define n 5
using namespace std;
void print_mtrx(int arr[n][n])
{
for( int i=0 ; i<n ; i++ )
{
for( int j=0 ; j<n ; j++ )
cout << arr[i][j] << " ";
cout << endl;
}
cout << endl;
}
int main(){
int maxr = 0;
/*
int a[n][n] = {{0, 5, 9, -1},
{-1, 0, 2, 8},
{-1, -1, 0, 7},
{4, -1, -1, 0}};
*/
int a[n][n] = {{0, 5, 5, 6, -1},
{-1, 0, 9, 8, 4},
{-1, -1, 0, 3, 8},
{6, -1, -1, 0, 5},
{-1, 2, 5, 6, 0}};
cout << "Adjacency matrix: " << endl;
print_mtrx(a);
for( int k=0 ; k<n ; k++ )
for( int i=0 ; i<n ; i++ )
for( int j=0 ; j<n ; j++ )
if(i != j && a[i][k] != -1 && a[k][j] != -1)
if(a[i][j] == -1)
a[i][j] = a[i][k] + a[k][j];
else
a[i][j] = min(a[i][j], a[i][k] + a[k][j]);
cout << "Matrix of minimal ways:" << endl;
print_mtrx(a);
for( int i=0 ; i<n ; i++ )
for( int j=0 ; j<n ; j++ )
if(a[i][j] > maxr)
maxr = a[i][j];
cout << "Max way: " << maxr << endl;
}