Cod sursa(job #1588113)

Utilizator H00DGosuly Robert H00D Data 2 februarie 2016 20:19:16
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator c Status done
Runda Arhiva educationala Marime 0.98 kb
#include <stdio.h>
#include <stdlib.h>

int     tab[101][101];
int     n;
FILE    *in;
FILE    *out;

void    read_tab()
{
    int     i;
    int     j;

    fscanf(in, "%d", &n);
    for(i = 0; i < n; i++)
        for (j = 0; j < n; j++)
            fscanf(in, "%d", tab[i] + j);
}

void    write_tab()
{
    int     i;
    int     j;

    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
            fprintf(out, "%d ", tab[i][j]);
        fprintf(out, "\n");
    }
}

int     roy_floyd()
{
    int     i;
    int     j;
    int     k;

    for (k = 0; k < n; k++)
        for (i = 0; i < n; i++)
            for (j = 0; j < n; j++)
            {
                if (tab[i][j] > tab[i][k] + tab[k][j])
                    tab[i][j] = tab[i][k] + tab[k][j];
            }
}

int    main()
{
    in = fopen("royfloyd.in", "r");
    out = fopen("royfloyd.out", "w");
    read_tab();
    roy_floyd();
    write_tab();
    return (0);
}