Cod sursa(job #1008936)

Utilizator mvcl3Marian Iacob mvcl3 Data 12 octombrie 2013 11:45:17
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <string.h>
#define IN "royfloyd.in"
#define OUT "royfloyd.out"
#define MAX_SIZE 109

std :: ifstream f(IN);
std :: ofstream g(OUT);

int N, RF[MAX_SIZE][MAX_SIZE];

inline void READ_DATA()
{
    f >> N;

    for(int i = 1; i <= N; ++i)
        for(int j = 1; j <= N; ++j)
            f >> RF[i][j];
}

inline void RoyFloyd()
{
    for(int k = 1; k <= N; ++k)
        for(int i = 1; i <= N; ++i)
            for(int j = 1; j <= N; ++j)
                if(RF[i][k] && RF[k][j] && (i != j) && (RF[i][j] > RF[i][k] + RF[k][j] || !RF[i][j]))
                    RF[i][j] = RF[i][k] + RF[k][j];
}

inline void WRITE_DATA()
{
    for(int i = 1; i <= N; ++i)
    {
        for(int j = 1; j <= N; ++j)
            g << RF[i][j] << ' ';
        g << '\n';
    }
}

int main()
{
    READ_DATA();
    RoyFloyd();
    WRITE_DATA();

    //std :: ofstream(OUT).close();
    return 0;
}