Cod sursa(job #997942)

Utilizator AnonymouslegionAnonymous Anonymouslegion Data 15 septembrie 2013 11:54:10
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <cstring>

using namespace std;

const int kinf = 1e9;

int mat[120][120], ans[120][120];

int main(){
  ifstream in("royfloyd.in");
  ofstream out("royfloyd.out");

  int n;
  in >> n;

  for(int i = 1; i <= n; ++i)
    for(int j = 1; j <= n; ++j){
      in >> mat[i][j];
      if(mat[i][j] == 0)
        mat[i][j] = kinf;
      ans[i][j] = mat[i][j];
    }

  for(int i = 1; i <= n; ++i)
    for(int j = 1; j <= n; ++j)
      for(int k = 1; k <= n; ++k)
        if(ans[j][i] + ans[i][k] < ans[j][k])
          ans[j][k] = ans[j][i] + ans[i][k];

  for(int i = 1; i <= n; ++i){
    for(int j = 1; j <= n; ++j)
      if(ans[i][j] < kinf && i != j)
        out << ans[i][j] << " ";
      else
        out << "0 ";
    out << "\n";
  }

  return 0;
}