Cod sursa(job #846708)

Utilizator ericptsStavarache Petru Eric ericpts Data 2 ianuarie 2013 17:45:10
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <algorithm>
using namespace std;

const int maxn = 101;

int mat[maxn][maxn];

int main()
{
    freopen("royfloyd.in","r",stdin);
    freopen("royfloyd.out","w",stdout);
    int i,j,k,n;
    scanf("%d\n",&n);
    for( i = 1 ;i <= n; ++ i)
        for( j = 1 ; j <= n ; ++ j)
            scanf("%d",&mat[i][j]);
    for( k = 1 ; k <= n ; ++ k )
        for( i = 1 ; i <= n ; ++ i )
            for( j = 1 ; j <= n ; ++ j)
            {
                if(i != k && i != j && k != j)
                    if(mat[i][k] + mat[k][j] < mat[i][j] || !mat[i][j])
                        mat[i][j] = mat[i][k] + mat[k][j];
            }
    for(i = 1 ; i <= n ; ++ i,printf("\n"))
        for(j = 1 ; j <= n ; ++ j)
            printf("%d ",mat[i][j]);
}