Cod sursa(job #2947477)

Utilizator iraresmihaiiordache rares mihai iraresmihai Data 26 noiembrie 2022 10:03:12
Problema Floyd-Warshall/Roy-Floyd Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <vector>
#include <queue>

#define MAXN 100
#define INF 1000000000
using namespace std;

int dist[MAXN][MAXN];

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

  int n, l, c, i, i2, i3;

  fscanf(fin, "%d", &n);

  for ( l = 0; l < n; l++ ) {
    for ( c = 0; c < n; c++ ) {
      fscanf(fin, "%d", &dist[l][c]);
      if ( !dist[l][c] )
        dist[l][c] = INF;
      if ( l == c )
        dist[l][c] = 0;
    }
  }

  for ( i = 0; i < n; i++ ) {
    for ( i2 = 0; i2 < n; i2++ ) {
      for ( i3 = 0; i3 < n; i3++ ) {
        dist[i][i2] = min(dist[i][i2], dist[i][i3] + dist[i3][i2]);
      }
    }
  }

  for ( l = 0; l < n; l++ ) {
    for ( c = 0; c < n; c++ ) {
      if ( dist[l][c] == INF )
        dist[l][c] = 0;

      fprintf(fout, "%d ", dist[l][c]);
    }
    fprintf(fout, "\n");
  }

  fclose(fin);
  fclose(fout);

  return 0;
}