Cod sursa(job #2439319)

Utilizator CuriosaurusIonita Lucian Andrei Curiosaurus Data 15 iulie 2019 17:29:17
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *read = fopen("royfloyd.in", "r");
    FILE *write = fopen("royfloyd.out", "w");

    int n, a[100][100], i, j, k;
    fscanf(read, "%d", &n);
    for(i = 0; i < n; i++)
        for(j = 0; j < n; j++)
        fscanf(read, "%d", &a[i][j]);
    for(i = 0; i < n; i++)
        for(j = 0; j < n; j++)
            for(k = 0; k < n; k++)
            {
                if (j != k && a[j][i] > 0 && a[i][k] > 0)
                    if (a[j][k] == 0)
                    {
                        a[j][k] = a[k][j] + a[i][k];
                    }
                if(a[j][k] > a[j][i] + a[i][k]) a[j][k] = a[j][i] + a[i][k];
            }
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
            fprintf(write, "%d ", a[i][j]);
        fprintf(write, "\n");
    }

    fclose(read);
    fclose(write);
    return 0;
}