Cod sursa(job #1066137)

Utilizator cruelifanLouis Cypher cruelifan Data 24 decembrie 2013 01:09:29
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <algorithm>

using namespace std;

const int knmax = 2e5;

int dp[105][105];

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 >> dp[i][j];
      if(!dp[i][j])
        dp[i][j] = knmax;
    }

  for(int i = 1; i <= n; ++i)
    for(int j = 1; j <= n; ++j)
      for(int k = 1; k <= n; ++k)
        dp[j][k] = min(dp[j][k], dp[j][i] + dp[i][k]);

  for(int i = 1; i <= n; ++i){
    for(int j = 1; j <= n; ++j){
      if(i == j || dp[i][j] >= knmax)
        dp[i][j] = 0;
      out << dp[i][j] << " ";
    }
    out << "\n";
  }

  return 0;
}