Cod sursa(job #2814785)

Utilizator Angel2IonitaAngel Ionita Angel2Ionita Data 8 decembrie 2021 16:42:37
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include <fstream>

using namespace std;

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

class RoyFloydG
{
    int size;

public:
    int **matrix;
    RoyFloydG(int n)
    {
        size = n;
        matrix = new int *[size];
        for (int i = 0; i < size; i++)
            matrix[i] = new int[size];
    }
    void RoyFloyd()
    {
        int i, j, k;
        for (k = 0; k < size; k++)
            for (i = 0; i < size; i++)
                for (j = 0; j < size; j++)
                    if (matrix[i][k] && matrix[k][j] && (matrix[i][j] > matrix[i][k] + matrix[k][j] || !matrix[i][j]) && i != j)
                        matrix[i][j] = matrix[i][k] + matrix[k][j];
    }

    ~RoyFloydG()
    {
        for (int i = 0; i < size; i++)
            delete[] matrix[i];
        delete[] matrix;
    }
};

int main()
{
    int N;
    f >> N;
    RoyFloydG g(N);
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            f >> g.matrix[i][j];
    g.RoyFloyd();
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
            o << g.matrix[i][j] << " ";
        o << endl;
    }

    return 0;
}