Cod sursa(job #1089028)

Utilizator techLaurentiu Avasiloaie tech Data 21 ianuarie 2014 09:36:22
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std;

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

short int n , matr[102][102] , i , j , k ;

int main ()
{
    fin >> n ;

    for ( i = 1 ; i <= n ; i ++ )
    {
        for ( j = 1 ; j <= n ; j ++ )
        {
            fin >> matr[i][j] ;
        }
    }

    for ( k = 1 ; k <= n ; k ++ )
    {
        for ( i = 1 ; i <= n ; i ++ )
        {
            for ( j = 1 ; j <= n ; j ++ )
            {
                if ( ( matr[i][j] > matr[i][k] + matr[k][j] || matr[i][j] == 0 ) && matr[i][k] != 0 && matr[k][j] != 0 && i != j )
                {
                    matr[i][j] = matr[i][k] + matr[k][j] ;
                }
            }
        }
    }

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

    return 0 ;
}