Cod sursa(job #735504)

Utilizator BitOneSAlexandru BitOne Data 16 aprilie 2012 16:47:56
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <cstdlib>
#define N_MAX 111
#define oo 1<<29

using namespace std;

int v[N_MAX][N_MAX];

int main()
{
    int N, i, j, k;
    ifstream in( "royfloyd.in" );
    ofstream out( "royfloyd.out" );

    in>>N;
    for(i=1; i <= N; ++i)
    {
        for(j=1; j <= N; ++j)
        {
            in>>v[i][j];
            if( !v[i][j] ) v[i][j]=oo;
        }
    }
    for(k=1; k <= N; ++k)
        for(i=1; i <= N; ++i)
            if(k != i)
                for(j=1; j <= N; ++j)
                    if(k != j && i != j && v[i][j] > v[i][k]+v[k][j] )
                        v[i][j]=v[i][k]+v[k][j];
    for(i=1; i <= N; ++i)
    {
        for(j=1; j <= N; ++j)
            out<<(oo == v[i][j] ? 0 : v[i][j] )<<' ';
        out<<'\n';
    }
    return EXIT_SUCCESS;
}