Cod sursa(job #2505708)

Utilizator XsoundCristian-Ioan Roman Xsound Data 7 decembrie 2019 10:32:11
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <bits/stdc++.h>
#define Nmax 105
#define Dmax 1005
using namespace std;

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

int a[Nmax][Nmax];
int sol[Nmax][Nmax];

int n;

void roy_floyd ( );
void read ( );
void afis ( );

int main()
{
    read ( );

    roy_floyd ( );

    afis ( );

    return 0;
}

void afis ( )
{
    for ( int i = 1; i <=n; i++ )
    {
        for ( int j = 1; j <= n; j++ )
            if ( a[i][j] == Dmax )
                fout << 0 << ' ';
            else fout << a[i][j] << ' ';
        fout << '\n';
    }
}

void roy_floyd ( )
{
    for ( int k = 1; k <= n; k++ )
        for ( int i = 1; i <= n; i++ )
            for ( int j = 1; j <= n ; j++ )
            {
                if ( i!=j && a[i][j] > a[i][k] + a[k][j] )
                    a[i][j] = a[i][k]+ a[k][j];
            }
}

void read ( )
{
    fin >> n;

    for ( int i = 1; i <= n; i++ )
        for ( int j = 1; j <= n; j++ )
        {
            fin >> a[i][j];
            if ( a[i][j] == 0 )
                a[i][j] = Dmax;
        }
}