Cod sursa(job #801379)

Utilizator gallexdAlex Gabor gallexd Data 24 octombrie 2012 09:28:37
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>

int N;
int M[110][110];

void royfloyd() {
    for (int k=1; k<=N; ++k)
        for (int i=1; i<=N; ++i)
            for (int j=1; j<=N; ++j)
                if (i!=j && M[i][k] && M[k][j] && (M[i][k] + M[k][j] <M[i][j] || !M[i][j]))
                    M[i][j] = M[i][k] + M[k][j];
}

int main () {

    freopen("royfloyd.in","rt",stdin);
    freopen("royfloyd.out","wt",stdout);

    scanf("%d", &N);
    for (int i=1; i<=N; ++i)
        for (int j=1; j<=N; ++j)
            scanf("%d", &M[i][j]);

    royfloyd();
    for (int i=1; i<=N; ++i) {
        for (int j=1; j<=N; ++j)
            printf("%d ", M[i][j]);
        printf("\n");
    }

    return 0;
}