Cod sursa(job #2276258)

Utilizator ZappaManIosif Adrian-Mihai ZappaMan Data 4 noiembrie 2018 14:41:10
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdlib>
#include <cstdio>

using namespace std;

#define MAXN 100
#define MAXV 500

int F[MAXN][MAXN];
int M[MAXN][MAXN];
int n;

int main() {
   freopen("royfloyd.in", "r", stdin);
   freopen("royfloyd.out", "w", stdout);

   scanf("%d", &n);
   for (int i = 0; i < n; ++i) {
      for (int j = 0; j < n; ++j) {
         scanf("%d", &F[i][j]);
         if (F[i][j] == 0 && i != j) {
            F[i][j] = MAXV;
         }
      }
   }



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

   for (int i = 0; i < n; ++i) {
      for (int j = 0; j < n; ++j) {
         printf("%d ", F[i][j]);
      }
      printf("\n");
   }



   return 0;
}