Cod sursa(job #2555501)

Utilizator gogu5Gogu Vrea la ONI gogu5 Data 24 februarie 2020 09:21:06
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>
#define INFINIT 1000000000

int d[101][101];

int main() {
    FILE *fin, *fout;
    int n, i, j, k;
    fin = fopen( "royfloyd.in", "r" );
    fout = fopen( "royfloyd.out", "w" );
    fscanf( fin, "%d", &n );
    for ( i = 1; i <= n; i++ ) {
        for ( j = 1; j <= n; j++ ) {
            fscanf( fin, "%d", &d[i][j] );
            if ( d[i][j] == 0 && i != j )
                d[i][j] = INFINIT;
        }
    }
    for ( k = 1; k <= n; k++ )
        for ( i = 1; i <= n; i++ )
            for ( j = 1; j <= n; j++ )
                if ( d[i][k] + d[k][j] < d[i][j] )
                    d[i][j] = d[i][k] + d[k][j];
    for ( i = 1; i <= n; i++ ) {
        for ( j = 1; j <= n; j++ ) {
            if ( d[i][j] != INFINIT )
                fprintf( fout, "%d ", d[i][j] );
            else
                fprintf( fout, "0 " );
        }
        fprintf( fout, "\n" );
    }
    fclose( fin );
    fclose( fout );
    return 0;
}