Cod sursa(job #985222)

Utilizator FlameingoAiordachioaei Marius Flameingo Data 16 august 2013 22:31:43
Problema Floyd-Warshall/Roy-Floyd Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
using namespace std;

const int NMAX = 103;
int G[NMAX][NMAX];

int main () {

    freopen ("royfloyd.in", "r", stdin);
    freopen ("royfloyd.out", "w", stdout);
    int N, i, j, k;
    scanf ("%d", &N);
    for (i = 1; i <= N; ++i)
        for (j = 1; j <= N; ++j)
            scanf ("%d", *(G + i) + j);

        for (j = 1; j <= N; ++j)
            for (i = 1; i <= N; ++i)
                for (k = 1; k <= N; ++k)
                if (G[i][k] && G[k][j] && (G[i][j] > G[i][k] + G[k][j] || !G[i][j]) && i != j)
                    G[i][j] = G[i][k] + G[k][j];
    for (i = 1; i <= N; ++i) {
        for (j = 1; j <= N; ++j)
            printf ("%d ", G[i][j]);
        printf ("\n");
    }

}