Cod sursa(job #1841112)

Utilizator danyvsDan Castan danyvs Data 5 ianuarie 2017 12:53:54
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>

using namespace std;

ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");

const int NMAX = 101;

int n;
int A[NMAX][NMAX];

void read()
{
    int i, j;
    fin >> n;
    for (i = 1; i <= n; ++ i)
        for (j = 1; j <= n; ++ j)
            fin >> A[i][j];
}

void roy_floyd()
{
    int i, j, k;
    for (k = 1; k <= n; ++ k)
        for (i = 1; i <= n; ++ i)
            for (j = 1; j <= n; ++ j)
                if (A[i][k] && A[k][j] && (A[i][j] > A[i][k] + A[k][j] || !A[i][j]) && i != j)
                    A[i][j] = A[i][k] + A[k][j];
}

void print()
{
    int i, j;
    for (i = 1; i <= n; ++ i)
        {
         for (j = 1; j <= n; ++ j)
            fout << A[i][j] << " ";
         fout << "\n";
        }
}

int main()
{
    read();
    fin.close();
    roy_floyd();
    print();
    fout.close();
    return 0;
}