Cod sursa(job #1221723)

Utilizator borcanirobertBorcani Robert borcanirobert Data 21 august 2014 12:44:28
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
using namespace std;

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

const int MAXNM = 105;
int a[MAXNM][MAXNM];
int n;

void RoyFloyd();

int main()
{
    int i, j;

    fin >> n;
    for ( i = 1; i <= n; i++ )
        for ( j = 1; j <= n; j++ )
            fin >> a[i][j];

    RoyFloyd();

    for ( i = 1; i <= n; i++ )
    {
        for ( j = 1; j <= n; j++ )
            fout << a[i][j] << ' ';
        fout << '\n';
    }

    fin.close();
    fout.close();
    return 0;
}

void RoyFloyd()
{
    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] == 0 && i != j ) ) )
                    a[i][j] = a[i][k] + a[k][j];
}