Cod sursa(job #145639)

Utilizator ViksenVictor-Nicolae Savu Viksen Data 29 februarie 2008 09:17:01
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>

int A[100][100],n,i,j,k;

int main ()
{
    freopen ( "royfloyd.in" , "r" , stdin );
    scanf ( "%d" , &n );
    for ( i=0 ; i<n ; i++ )
        for ( j=0 ; j<n ; j++ )
            scanf ( "%d" , &A[i][j] );
    fclose ( stdin );

    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] && A[i][j] > A[i][k] + A[k][j])
                    A[i][j] = A[i][k] + A[k][j];

    freopen ( "royfloyd.out" , "w" , stdout );
    for ( i=0 ; i<n ; i++ )
    {
        for ( j=0 ; j<n-1 ; j++ )
            printf ( "%d " , A[i][j] );
        printf ( "%d\n" , A[i][n-1] );
    }
    fclose ( stdout );

    return 0;
}