Cod sursa(job #2671002)

Utilizator mircea_007Mircea Rebengiuc mircea_007 Data 11 noiembrie 2020 10:19:17
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>

#define MAXN 100
#define INF 10001

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]);

  for( i = 0 ; i < n ; i++ )
    for( j = 0 ; j < n ; j++ )
      for( k = 0 ; k < n ; k++ )
        if( mat[i][k] > 0 && mat[k][j] > 0 && 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;
}