Cod sursa(job #1322954)

Utilizator Toast97Calin Farcas Toast97 Data 20 ianuarie 2015 15:50:12
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;

ifstream f ("royfloyd.in");
ofstream g ("royfloyd.out");

int N[105][105], n;

void citire ()
{
    f >> n;

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

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

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

int main()
{
    citire ();
    royfloyd ();
    afisare ();
}