Cod sursa(job #400729)

Utilizator Omega91Nicodei Eduard Omega91 Data 21 februarie 2010 21:25:37
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <algorithm>
using namespace std;


const int NMAX = 101;

int main()
{
    short i, j, k, N;
    int a[NMAX][NMAX];
    ifstream f1("royfloyd.in");
    freopen("royfloyd.out", "w", stdout);
    f1 >> N;
    for (i = 0; i != N; ++i)
        for (j = 0; j != N; ++j)
            f1 >> a[i][j];
    for (k = 0; k != N; ++k)
        for (i = 0; i != N; ++i)
            for (j = 0 ; j != N; ++j)
                if (a[i][k] && a[k][j] && i != j)
                    if (a[i][j] > a[i][k] + a[k][j] || !a[i][j])
                        a[i][j] = a[i][k] + a[k][j];
                    
    for (i = 0; i != N; ++i) {
        for (j = 0; j != N; ++j)
            printf("%d ", a[i][j]);
        printf("\n");
    }
}