Cod sursa(job #2822217)

Utilizator catarau.bianca.Bianca Catarau catarau.bianca. Data 23 decembrie 2021 18:28:45
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.31 kb
#include <iostream>
#include <fstream>
#include <vector>


using namespace std;

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


class graf{
private:
    int n,m;
public:
    graf(int n);
    void roy_floyd(int M[105][105]);
    void royfloyd();
};

graf :: graf(int n)
{
    this->n = n;
}

void graf::roy_floyd(int M[105][105]){

    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= n; ++j)
            if(i == j)
                M[i][j] = 0;
            else if(M[i][j] == 0 && i != j)
                M[i][j] = 10001;

    for(int k=0;k<n;k++)
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
                if (M[i][k]+M[k][j]<M[i][j])
                    M[i][j]=M[i][k]+M[k][j];

    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if ( M[i][j] == 10001)
                M[i][j]==0;

    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            if(M[i][j] != 10001)
                g<<M[i][j]<<" ";
            else g << 0 << " ";
        g<<endl;
    }
}

void graf::royfloyd(){
    int n,i ,j;
    f>>n;
    int M[105][105];
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            f>>M[i][j];
    graf G(n);

    G.roy_floyd(M);
}
int main()
{
    int n;
    graf G(n);
    G.royfloyd();
    return 0;
}