Cod sursa(job #2811879)

Utilizator andreinovaNacu Andrei Emilian andreinova Data 3 decembrie 2021 14:15:38
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <bits/stdc++.h>

#define MAXR 101

using namespace std;

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

class Graf
{
    int NrNoduri;

public:

    Graf(int NrNoduri);

    void RoyFloyd(int G[MAXR][MAXR]);
};

Graf::Graf(int NrNoduri)
{
    this->NrNoduri = NrNoduri;
}

void Graf :: RoyFloyd(int G[MAXR][MAXR])
{

    for(int k = 1; k <= NrNoduri; k++)
        for(int i = 1; i <= NrNoduri; i++)
            for(int j = 1; j <= NrNoduri; j++)
                if ((G[i][j] > G[i][k] + G[k][j] || !G[i][j]) && i != j && G[i][k] && G[k][j])
                    G[i][j] = G[i][k] + G[k][j];

}
int main()
{

    int N;
    in>>N;

    Graf g(N);
    int G[MAXR][MAXR];

    for(int i = 1; i <= N; i++)
        for(int j = 1; j <= N; j++)
            in >> G[i][j];

    g.RoyFloyd(G);

    for(int i = 1; i <= N; i++)
    {
        for(int j = 1; j <= N; j++)
            out << G[i][j] << " ";

        out<<"\n";
    }

    return 0;
}