Cod sursa(job #3150594)

Utilizator victorzarzuZarzu Victor victorzarzu Data 17 septembrie 2023 17:01:10
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>

using namespace std;
#define oo 0x3f3f3f3f

ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
int n;
int dp[100][100];

void read() {
  f>>n;
  for(int i = 0;i < n;++i) {
    for(int j = 0;j < n;++j) {
      f>>dp[i][j];
      if(!dp[i][j]) {
        dp[i][j] = oo;
      } 
    }
  }
  f.close();
}

void solve() {
  for(int k = 0;k < n;++k) {
    for(int i = 0;i < n;++i) {
      for(int j = 0;j < n;++j) {
        if(i != j) {
          dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);
        }
      }
    }
  }
  for(int i = 0;i < n;++i, g<<'\n') {
    for(int j = 0;j < n;++j) {
      g<<(dp[i][j] == oo ? 0 : dp[i][j]) << " ";
    }
  }
}

int main() {
  read();
  solve();
  return 0;
}