Cod sursa(job #2683883)

Utilizator Mirela_MagdalenaCatrina Mirela Mirela_Magdalena Data 12 decembrie 2020 10:51:40
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#define INF 0x3f3f3f3f
#define NMAX 105
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

int n, m;
int ED[NMAX][NMAX];

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


void read()
{
    int x, y;

    f>>n;
    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= n; ++j)
        {
            f>>x;
            if(x == 0)
                ED[i][j] = INF;
            else{
                ED[i][j] = x;
            }
        }
}

void roy_warshall()
{
    for(int k = 1; k<=n; ++k)
        for(int i = 1; i <= n ; ++i)
            for(int j = 1; j <= n; ++j)
                if(ED[i][j] > ED[i][k] + ED[k][j])
                {
                    ED[i][j] = ED[i][k] + ED[k][j];
                }
}

void afisED(int ED[NMAX][NMAX])
{
    for(int i = 1; i <= n; ++i)
    {
        for(int j = 1; j <= n; ++j)
        {
            if(ED[i][j] >= INF || i == j)
                g<<0<<" ";
            else g<<ED[i][j]<<" ";
        }
        g<<'\n';
    }
}

int main()
{
    read();
    roy_warshall();
    afisED(ED);
    //afisED(P);

    return 0;
}