Cod sursa(job #3297269)

Utilizator Arhiva_Educationala_2Arhiva Educationala doi Arhiva_Educationala_2 Data 22 mai 2025 12:47:06
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>
#include <vector>

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

  int n;
  fscanf( fin, "%d", &n );
  std::vector<std::vector<int>> mat(n, std::vector<int>(n));
  for( int i = 0; i < n; i++ )
    for( int j = 0; j < n; j++ ){
      fscanf( fin, "%d", &mat[i][j] );
      if( !mat[i][j] )
        mat[i][j] = 1e9;
    }

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

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

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