Cod sursa(job #1204279)

Utilizator mvcl3Marian Iacob mvcl3 Data 2 iulie 2014 16:04:39
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>

#define in "royfloyd.in"
#define out "royfloyd.out"
#define Max_Size 109

std :: ifstream f(in);
std :: ofstream g(out);

class RoyFloyd
{
    protected :
        int N, RF[Max_Size][Max_Size];
    public :
        void Read ();
        void Solve();
        void Write();
};

void RoyFloyd :: Read ()
{
    f >> N;

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

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

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

int main()
{
    RoyFloyd obj;

    obj.Read();
    obj.Solve();
    obj.Write();

    return 0;
}