Cod sursa(job #462184)

Utilizator S7012MYPetru Trimbitas S7012MY Data 9 iunie 2010 22:35:18
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>

int mat[105][105],n;

void floyd_warshall() {
    int i,j,k;
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            for(k=1; k<=n; k++)
                if (mat[j][i] &&
                mat[i][k] &&
                (mat[j][k] > mat[j][i] + mat[i][k] ||
                 !mat[j][k])
                 && j!= k)
                        mat[j][k] = mat[j][i] + mat[i][k];//din if
}

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