Cod sursa(job #694048)

Utilizator biroBiro Alexandru biro Data 27 februarie 2012 18:20:20
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <algorithm>
#include <stdio.h>

using namespace std ;

int a[101][101] ;

int minim(int A,int B) {
  if (A<B) return A ;
  return B ;
}

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

  int n ;

  scanf ("%d" , &n) ;

  for(int i=1; i<=n; ++i) {
    for(int j=1 ; j<=n ; ++j) {
      scanf("%d" , &a[i][j]) ;
    }
  }

  for (int k=1;k<=n;++k) {
    for (int i=1;i<=n;++i) {
      for (int j=1 ; j<=n ; ++j) {
        if (i==j) {
          a[i][j]==0 ;
        }
        else {
          if (a[i][j]!=0)
            a[i][j]=minim(a[i][j],a[i][k]+a[k][j]) ;
          else a[i][j]=a[i][k]+a[k][j] ;
        }
      }
    }
  }
  for (int i=1;i<=n ; ++i) {
    for(int j=1 ; j<=n ; ++j) {
      printf ("%d " , a[i][j] ) ;
    }
    printf ("\n");
  }


  return 0 ;
}