Cod sursa(job #2175122)

Utilizator filip.mihalutMihalut Filip filip.mihalut Data 16 martie 2018 15:25:11
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
#define Nmax 105

using namespace std;

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

int a[Nmax][Nmax] , i,j,n;

inline void read()
{
    f >> n;
    for(i = 1; i <= n; i++)
        for(j = 1; j <= n; j++)
            f >> a[i][j];
}

bool bun(int k,int i,int j)
{
    if(a[i][k] == 0 || a[k][j] == 0 || i == j)
        return false;
    if(a[i][j] == 0 || a[i][k] + a[k][j] < a[i][j])
        return true;
    return false;
}

inline void royFloyd()
{
    for(int k = 1; k <= n; k++)
        for(i = 1; i <= n; i++)
            for(j = 1; j <= n; j++)
                if(bun(k,i,j))
                    a[i][j] = a[i][k] + a[k][j];
}

inline void afisare()
{
    for(i = 1; i <= n; i++)
    {
        for(j = 1; j <= n; j++)
            g << a[i][j] << " ";
        g << '\n';
    }
}

int main()
{
    read();
    royFloyd();
    afisare();
    return 0;
}