Cod sursa(job #704902)

Utilizator cipri_tomCiprian Tomoiaga cipri_tom Data 2 martie 2012 21:49:32
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <cstdio>
using namespace std;

#define INF 9999
#define DIM 101

FILE* fin;

int a[DIM][DIM];
int c[DIM][DIM];
int n;


int main()
{
    fin = fopen("royfloyd.in", "r");
    fscanf(fin, "%d", &n);
    for ( int i = 1; i <= n; ++i )
        for ( int j = 1; j <= n; ++j )
        {
            fscanf(fin, "%d", &a[i][j]);
            //a[i][j] = (i != j ? INF:0);
        }
    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][k] && a[k][j] && (/*!a[i][j] ||*/ a[i][k] + a[k][j] < a[i][j] ) )
                    a[i][j] = a[i][k] + a[k][j];

    ofstream fout("royfloyd.out");

    for ( int i = 1; i <= n; ++i )
    {
        for ( int j = 1; j <= n; ++j )
            fout << a[i][j] << ' ';
        fout << '\n';
    }

    fout.close();
    return 0;
}