Cod sursa(job #634328)

Utilizator fmanceFelix Gabriel Mance fmance Data 15 noiembrie 2011 22:34:46
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 1.05 kb
#include <stdio.h>
#include <stdlib.h>

#define FILEIN "royfloyd.in"
#define FILEOUT "royfloyd.out"

int main()
{
    FILE *fileIn, *fileOut;
    int c[100][100], i, j, k, n;
    
    fileIn = fopen(FILEIN, "r");
    fileOut = fopen(FILEOUT, "w");
    if (fileIn == NULL) {
        printf("cannot open file %s", FILEIN);
        exit(1);
    }
    fscanf(fileIn, "%d", &n);
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++) {
            fscanf(fileIn, "%d", &c[i][j]);
            if (c[i][j] == 0)
                c[i][j] = 2000;
        }
    
    for (j = 0; j < n; j++)
        for (i = 0; i < n; i++)
            if (j != i)
                for (k = 0; k < n; k++)
                    if (k != i && c[i][k] > c[i][j] + c[j][k])
                        c[i][k] = c[i][j] + c[j][k];
    
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            if (c[i][j] <= 1000)
                fprintf(fileOut, "%d ", c[i][j]);
            else
                fprintf(fileOut, "0 ");
        }
        fprintf(fileOut, "\n");
    }
    
    return 0;
}