Cod sursa(job #1554791)

Utilizator jurjstyleJurj Andrei jurjstyle Data 21 decembrie 2015 19:06:12
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std ;

ifstream f ("royfloyd.in") ;
ofstream g ("royfloyd.out") ;

int a[105][105] , n ;

void citire()
{
    f >> n ;
    for ( int i = 1 ; i <= n ; ++i )
        for ( int j = 1 ; j <= n ; ++j )
            f >> a[i][j] ;
}

void roy_floyd()
{
    for ( int k = 1 ; k <= n ; ++k )
        for ( int i = 1 ; i <= n ; ++i )
            for ( int 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 afis()
{
    for ( int i = 1 ; i <= n ; ++i )
       {
        for ( int j = 1 ; j <= n ; ++j )
            g << a[i][j] << " " ;
        g << "\n" ;
       }
}


int main()
{
    citire();
    roy_floyd();
    afis();
    return 0;
}