Cod sursa(job #2642023)

Utilizator marinaoprOprea Marina marinaopr Data 13 august 2020 14:12:00
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <stdio.h>

#define NMAX 105

using namespace std;

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

int n,k,i,j,graf[NMAX][NMAX],cost[NMAX][NMAX];

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

            if(graf[i][j])
                cost[i][j] = graf[i][j];
            else
                cost[i][j] = 1e9;
        }

    for(k=1; k<=n; ++k)
        for(i=1; i<=n; ++i)
            for(j=1; j<=n; ++j)
                if(i != j and cost[i][k] < 1e9 and cost[k][j] < 1e9  and cost[i][k]+cost[k][j] < cost[i][j])
                    cost[i][j] = cost[i][k] + cost[k][j];

    for(i=1; i<=n; ++i)
    {
        for(j=1; j<=n; ++j)
            if(cost[i][j] == 1e9)
                fprintf(fout, "0 ");
            else
                fprintf(fout, "%d ", cost[i][j]);

        fprintf(fout, "\n");
    }

    fclose(fin);
    fclose(fout);
    return 0;
}