Cod sursa(job #1211406)

Utilizator xtreme77Patrick Sava xtreme77 Data 22 iulie 2014 15:51:39
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>

#define rint register int

const char IN [ ] = "royfloyd.in";
const char OUT [ ] = "royfloyd.out";
const int MAX = 114;

using namespace std;

int mat[MAX][MAX];

int main()
{
    int n;
    freopen( IN , "r" , stdin );
    freopen( OUT , "w" , stdout );
    scanf("%d",&n);
    for( rint i = 1 ; i <= n ; ++ i )
        for( rint j = 1 ; j <= n ; ++ j )
            scanf("%d",&mat[i][j]);
    for( rint k = 1 ; k <= n ; ++ k )
        for( rint i = 1 ; i <= n ; ++ i )
            for( rint j = 1 ; j <= n ; ++ j )
                if( mat[i][k] and mat[k][j] and i!=j and ( mat[i][j]>mat[i][k]+mat[k][j] or !mat[i][j] ) )
                    mat[i][j] = mat[i][k] + mat[k][j] ;
    for( rint i = 1 ; i <= n ; ++ i , printf("\n") )
        for( rint j = 1 ; j <= n ; ++ j )
            printf("%d ",mat[i][j]);
    return 0;
}