Cod sursa(job #1278170)

Utilizator Emilia26Hangan Emilia Emilia26 Data 28 noiembrie 2014 16:34:16
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#define DIM 101
#define INF 0x3f3f3f3f
using namespace std;

ifstream is("royfloyd.in");
ofstream os("royfloyd.out");

int n, a[DIM][DIM];
int c[DIM][DIM];

void Read();
void FW();
void Write();

int main()
{
    Read();
    FW();
    Write();

    is.close();
    os.close();
    return 0;
}


void Read()
{
    is >> n;
    for ( int i = 1; i <= n; ++i )
        for ( int j = 1; j <= n; ++j )
        {
            is >> c[i][j];
            if ( !c[i][j] )
                c[i][j] = INF;

        }
}

void FW()
{
    for ( int k = 1; k <= n; ++k )
        for ( int i = 1; i <= n; ++i )
            for ( int j = 1; j <= n; ++j )
                if ( c[i][j] > c[i][k] + c[k][j] && i != j)
                    c[i][j] = c[i][k] + c[k][j];

}

void Write()
{
    for ( int i = 1; i <= n; ++i )
    {
        for ( int j = 1; j <= n; ++j )
            if ( c[i][j] != INF )
                os << c[i][j] << ' ';
            else
                os << "0 ";
        os << '\n';
    }


}