Cod sursa(job #1912780)

Utilizator Catalin121Catalin Sumanaru Catalin121 Data 8 martie 2017 10:38:43
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <climits>
#define inf INT_MAX
#define N 105
using namespace std;
int cost[N][N], n;
void roy()
{
        for(int k=1; k<=n; k++)     // Roy -Floyd
        for(int i=1; i<=n; i++)
            for(int j=1; j<=n; j++)
            if(i!=j && cost[i][k] && cost[k][j] && (cost[i][j] || cost[i][j] > cost[i][k] + cost[k][j]))
                cost[i][j] = cost[i][k] + cost[k][j];
}

int main()
{
    ifstream fin("royfloyd.in");
    fin >> n;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
        fin >> cost[i][j];
    fin.close();

    if(n) roy();

    ofstream fout("royfloyd.out");
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n; j++)
            fout << cost[i][j] << " ";
        fout << '\n';
    }
    fout.close();
        return 0;
}