Cod sursa(job #1730676)

Utilizator stefan_bogdanstefan bogdan stefan_bogdan Data 17 iulie 2016 13:58:47
Problema Floyd-Warshall/Roy-Floyd Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <stdio.h>

FILE *f, *g;
int n, d[100+10][100+10];

void ReadInputData () {
    fscanf(f, "%d", &n);
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++) {
            fscanf(f, "%d", &d[i][j]);
            if (!d[i][j] && i != j)
                d[i][j] = 10000;
        }
}
void RoyFloyd () {
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
                for (int k = 1; k <= n; k++)
                    if (d[i][j] > d[i][k] + d[k][j])
                        d[i][j] = d[i][k] + d[k][j];
}
void WriteOutputData () {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++)
            fprintf(g, "%d ", d[i][j]);
        fprintf(g, "\n");
    }
}
int main() {
    f = fopen("royfloyd.in", "r");
    g = fopen("royfloyd.out", "w");

    ReadInputData();
    RoyFloyd();
    WriteOutputData();

    fclose(f);
    fclose(g);

    return 0;
}