Cod sursa(job #2671045)

Utilizator mircea_007Mircea Rebengiuc mircea_007 Data 11 noiembrie 2020 12:09:31
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>

#define MAXN 100
#define INF 1000000000

int mat[MAXN][MAXN];

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

  int n, i, j, k;

  fscanf(fin, "%d", &n);
  for( i = 0 ; i < n ; i++ )
    for( j = 0 ; j < n ; j++ ){
      fscanf(fin, "%d", &mat[i][j]);
      if( i != j && mat[i][j] == 0 )
        mat[i][j] = INF;
    }

  for( k = 0 ; k < n ; k++ )
    for( i = 0 ; i < n ; i++ )
      for( j = 0 ; j < n ; j++ )
        if( mat[i][j] > mat[i][k] + mat[k][j] )
          mat[i][j] = mat[i][k] + mat[k][j];

  for( i = 0 ; i < n ; i++ ){
    for( j = 0 ; j < n ; j++ )
      fprintf(fout, "%d ", mat[i][j]);
    fputc('\n', fout);
  }

  fclose(fin);
  fclose(fout);
  return 0;
}