Cod sursa(job #2801415)

Utilizator LucaMihaiLM10Luca Ilie LucaMihaiLM10 Data 16 noiembrie 2021 10:55:03
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>

#define MAX_N 100

int dist[MAX_N][MAX_N];

int main() {
    FILE *fin, *fout;
    int n, i, j, k;

    fin = fopen( "royfloyd.in", "r" );
    fscanf( fin, "%d", &n );
    for ( i = 0; i < n; i++ ) {
        for ( j = 0; j < n; j++ )
            fscanf( fin, "%d", &dist[i][j] );
    }
    fclose( fin );

    for ( k = 0; k < n; k++ ) {
        for ( i = 0; i < n; i++ ) {
            for ( j = 0; j < n; j++ ) {
                if ( dist[i][k] + dist[k][j] < dist[i][j] )
                    dist[i][j] = dist[i][k] + dist[k][j];
            }
        }
    }

    fout = fopen( "royfloyd.out", "w" );
    for ( i = 0; i < n; i++ ) {
        for ( j = 0; j < n; j++ )
            fprintf( fout, "%d ", dist[i][j] );
        fputc( '\n', fout );
    }
    fclose( fout );

    return 0;
}