Cod sursa(job #2683866)

Utilizator razvanradulescuRadulescu Razvan razvanradulescu Data 12 decembrie 2020 10:44:39
Problema Floyd-Warshall/Roy-Floyd Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <fstream>
#include <iostream>
#define INF 0x3F3F3F3F
using namespace std;

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

int mat[105][105];
int n;

void init()
{
    for(int i = 2; i<=n; i++)
    {
        for(int j = 0; j<n; j++)
        {
            if(i != j && mat[i][j] == 0)
                mat[i][j] = INF;
        }
    }
}

void read()
{
    f>>n;
    for(int i = 0; i<n; i++)
    {
        for(int j = 0; j<n; j++)
        {
            f>>mat[i][j];
        }
    }
}

void royfloyd()
{
    for(int k = 0; k<n; k++)
    {
        for(int i = 0; i<n; i++)
        {
            for(int j = 0; j<n; j++)
            {
                if(i != j)
                    mat[i][j] = min(mat[i][j], mat[i][k] + mat[k][j]);
            }
        }
    }
}

void print()
{
    for(int i = 0; i<n; i++)
    {
        for(int j = 0; j<n; j++)
        {
            if(mat[i][j] == INF)
                g<<"0 ";
            else
                g<<mat[i][j]<<" ";
        }
        g<<"\n";
    }
}

int main()
{
    read();
    init();
    royfloyd();
    print();
    return 0;
}