Cod sursa(job #2295101)

Utilizator Salamandra01Felmeri Zsolt Salamandra01 Data 3 decembrie 2018 08:42:36
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
#include <iostream>
#include <fstream>

#define N 101

using namespace std;

int main()
{
    freopen("royfloyd.in", "r", stdin);
    freopen("royfloyd.out", "w", stdout);
    //int **matrix;
    int matrix[N][N];
    int n;
    cin >> n;

    /*matrix = (int**)malloc(n*sizeof(int*));
    for(int i = 1; i <= n; ++i)
        matrix[i] = (int*)malloc(n*sizeof(int));*/

    for(int i = 1; i <= n; ++i){
        for(int j = 1; j <= n; ++j){
            cin >> matrix[i][j];
        }
    }

    for(int i = 1; i <= n; ++i){
        for(int j = 1; j <= n; ++j){
            for(int k = 1; k <= n; ++k){
                if(matrix[j][i] && matrix[i][k] && j != k){
                    if(!matrix[j][k]){
                        matrix[j][k] = matrix[j][i] + matrix[i][k];
                    }
                    else{
                        matrix[j][k] = min(matrix[j][k], matrix[j][i]+matrix[i][k]);
                    }
                }
            }
        }
    }

    for(int i = 1; i <= n; ++i){
        for(int j = 1; j <= n; ++j){
            cout << matrix[i][j] << ' ';
        }
        cout << '\n';
    }

    /*for(int i = 1; i <= n; ++i){
        free(matrix[i]);
    }
    free(matrix);*/

    return 0;
}