Cod sursa(job #448567)

Utilizator TabaraTabara Mihai Tabara Data 4 mai 2010 01:18:52
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.97 kb
/*
 * @ Copyright, 3.05.2010
 * Mihai Tabără
 * 325 CA
 * Lab 8 [ PA ]
 * Time Complexity - O(N^3)
 * Language used: C
 * Operating System: Ubuntu 9.10
 * Environment: Vim
 */

#include <stdio.h>
#include <stdlib.h>

#define in "royfloyd.in"
#define out "royfloyd.out"
#define NMAX 105

int A[NMAX][NMAX];
int N;

int main()
{
    freopen( in, "r", stdin );
    freopen( out, "w", stdout );

    int i, j, k;
    scanf( "%d", &N );
    for ( i = 1; i <= N; ++i )
        for ( j = 1; j <= N; ++j )
            scanf( "%d", &A[i][j] );

    for ( k = 1; k <= N; ++k )
        for ( i = 1; i <= N; ++i )
            for ( j = 1; j <= N; ++j )
            if ( i != j )
            {
                if (  A[i][k] && A[k][j] && ((!A[i][j]) || (A[i][j] > A[i][k] + A[k][j])) )
                   A[i][j] = A[i][k] + A[k][j];
            }
    for ( i = 1; i <= N; ++i )
    {
        for ( j = 1; j <= N; ++j )
            printf( "%d ", A[i][j] );
        printf( "\n" );
    }
    return 0;
}