Cod sursa(job #144389)

Utilizator TabaraTabara Mihai Tabara Data 27 februarie 2008 15:58:04
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <stdio.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 ( ( !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;
}