Cod sursa(job #1391094)

Utilizator DysKodeTurturica Razvan DysKode Data 17 martie 2015 17:13:11
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
using namespace std;

#define INF 20000000

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

int M[101][101],i,j,k,n,m;

int main()
{
    fin>>n;

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

    for(i=1 ; i<=n ; ++i)
        for(j=1 ; j<=n ; ++j)
            if( M[ i ][ j ] == 0 )
                M[ i ][ j ] = INF;

    for(k=1 ; k<=n ; ++k)
        for(i=1 ; i<=n ; ++i)
            for(j=1 ; j<=n ; ++j)
                if( M[ i ][ j ] > M[ i ][ k ] + M[ k ][ j ] && i != j )
                    M[ i ][ j ] = M[ i ][ k ] + M[ k ][ j ];

    for(i=1 ; i<=n ; ++i,fout<<'\n')
        for(j=1 ; j<=n ; ++j)
            if( M[ i ][ j ] == INF )
                fout<<0<<' ';
            else
                fout<<M[ i ][ j ]<<' ';

return 0;
}