Загрузка данных


#include <iostream>
#include <vector>

using namespace std;

using us = unsigned int;
using matrix_type = vector<vector<short>>;

void show_matrix(const matrix_type& adjacency_matrix)
{
    for (const auto& line : adjacency_matrix)
    {
        for (const auto& el : line)
        {
            cout << el << " ";
        }
        cout << endl;
    }
}

void floyd(matrix_type& adjacency_matrix)
{
    us n = adjacency_matrix.size();
    
    for (us k = 0; k < n; ++k)
    {
        for (us i = 0; i < n; ++i)
        {
            for (us j = 0; j < n; ++j)
            {
                if (adjacency_matrix[i][j] > adjacency_matrix[i][k] + adjacency_matrix[k][j])
                {
                    adjacency_matrix[i][j] = adjacency_matrix[i][k] + adjacency_matrix[k][j];
                }
            }
        }
    }
}

void read_matrix(matrix_type& adjacency_matrix)
{
    us n = adjacency_matrix.size();
    for (us i = 0; i < n; ++i)
    {
        for (us j = 0; j < n; ++j)
        {
            cin >> adjacency_matrix[i][j];
        }
    }
}

int main()
{
    us N;
    cin >> N;
    
    matrix_type adjacency_matrix(N, vector<short>(N));
    read_matrix(adjacency_matrix);
    floyd(adjacency_matrix);
    show_matrix(adjacency_matrix);
    
    return 0;
}