Cod sursa(job #1847564)

Utilizator msciSergiu Marin msci Data 14 ianuarie 2017 18:52:45
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

const int N = 123;
const int INF = 0x3f3f3f3f;

int dist[N][N];
int n;

void floyd_warshall() {
  for (int k = 0; k < n; k++) {
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
      }
    }
  }
}

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", dist[i] + j);
      if (dist[i][j] == 0 && i != j) {
        dist[i][j] = INF;
      }
    }
  }
  floyd_warshall();
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      printf("%d ", (dist[i][j] == INF ? 0 : dist[i][j]));
    }
    puts("");
    fflush(stdout);
  }
  return 0;
}