Cod sursa(job #1818677)

Utilizator Tiberiu02Tiberiu Musat Tiberiu02 Data 29 noiembrie 2016 18:21:00
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
# include <iostream>
# include <fstream>

using namespace std;

# define MAX_N 100
int p[MAX_N][MAX_N];

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

    int n, k, i, j;

    fin >> n;

    for ( i = 0; i < n; i ++ )
        for ( j = 0; j < n; j ++ )
            fin >> p[i][j];

    for ( k = 0; k < n; k ++ )
        for ( i = 0; i < n; i ++ )
            for ( j = 0; j < n; j ++ )
                if ( p[i][k] && p[k][j] && ( p[i][k] + p[k][j] < p[i][j] || !p[i][j] ) && i != j )
                    p[i][j] = p[i][k] + p[k][j];

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

    fin.close();
    fout.close();

    return 0;
}