Cod sursa(job #1167991)

Utilizator mucenic_b101Bogdan Mucenic mucenic_b101 Data 6 aprilie 2014 16:02:16
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>
#define MAXN 100

int a[MAXN+1][MAXN+1];

int main () {
    FILE *f, *g;
    f = fopen( "royfloyd.in", "r" );
    g = fopen( "royfloyd.out", "w" );

    int n;

    fscanf( f, "%d", &n );

    for( int i = 1 ; i <= n ; ++i )
        for( int j = 1 ; j <= n ; ++j )
            fscanf( f, "%d", &a[i][j] );

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

    for( int i = 1 ; i <= n ; ++i ) {
        for( int j = 1 ; j <= n ; ++j )
            fprintf( g, "%d ", a[i][j] );
        fprintf( g, "\n" );
    }

    fclose( f );
    fclose( g );
    return 0;
}