Cod sursa(job #1551524)

Utilizator Vali_DeaconuVali Deaconu Vali_Deaconu Data 15 decembrie 2015 23:24:09
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<cstdio>
using namespace std;
typedef int matrice[105][105];
matrice A;
int n;
void init() {
    if (freopen("royfloyd.in", "r", stdin)) ;
    if (scanf("%d", &n)) ;
    for (int i=1; i<=n; ++i)
        for (int j=1; j<=n; ++j)
            if (scanf("%d", &A[i][j])) ;
    fclose(stdin);
}
void roy_floyd() {
    for (int k=1; k<=n; ++k)
        for (int i=1; i<=n; ++i)
            for (int j=1; j<=n; ++j)
                if (A[i][k] && A[k][j] && (A[i][j] > A[i][k] + A[k][j] || !A[i][j]) && i != j)
                    A[i][j] = A[i][k] + A[k][j];
}
void finish() {
    if (freopen("royfloyd.out", "w", stdout)) ;
    for (int i=1; i<=n; ++i) {
        for (int j=1; j<=n; ++j)
            printf("%d ", A[i][j]);
        printf("\n");
    }
    fclose(stdout);
}

int main() {
    init();
    roy_floyd();
    finish();
    return 0;
}