Cod sursa(job #2155270)

Utilizator andrei.gramescuAndrei Gramescu andrei.gramescu Data 7 martie 2018 19:11:48
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
using namespace std;
#define NMAX 105

int n, a[NMAX][NMAX];

int main(){

    int k, i, j;
    FILE *fin, *fout;
    fin = fopen("royfloyd.in", "r");
    fout = fopen("royfloyd.out", "w");

    fscanf(fin, "%d ", &n);
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            fscanf(fin, "%d ", &a[i][j]);

    ///Floyd Warshal
    for(k=1; k<=n; k++)
        for(i=1; i<=n; i++)
            for(j=1; j<=n; j++)
                if(a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]))
                    a[i][j] = a[i][k] + a[k][j];

    for(i=1; i<=n; i++){
        for(j=1; j<=n; j++)
            fprintf(fout, "%d ", a[i][j]);
        fprintf(fout, "\n");
    }

    return 0;
}