Cod sursa(job #601299)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 5 iulie 2011 20:49:18
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>

#define NMax 105

using namespace std;

int N, Cost[NMax][NMax];

void Read ()
{
    ifstream fin ("royfloyd.in");
    fin >> N;
    for (int i=1; i<=N; ++i)
    {
        for (int j=1; j<=N; ++j)
        {
            fin >> Cost[i][j];
        }
    }
    fin.close ();
}

void Print ()
{
    ofstream fout ("royfloyd.out");
    for (int i=1; i<=N; ++i)
    {
        for (int j=1; j<=N; ++j)
        {
            fout << Cost[i][j] << " ";
        }
        fout << "\n";
    }
    fout.close ();
}

void RoyFloyd ()
{
    for (int k=1; k<=N; ++k)
    {
        for (int i=1; i<=N; ++i)
        {
            for (int j=1; j<=N; ++j)
            {
                if (Cost[i][k]!=0 and Cost[k][j]!=0 and i!=j and (Cost[i][j]>Cost[i][k]+Cost[k][j] or Cost[i][j]==0))
                {
                    Cost[i][j]=Cost[i][k]+Cost[k][j];
                }
            }
        }
    }
}

int main()
{
    Read ();
    RoyFloyd ();
    Print ();
    return 0;
}