Cod sursa(job #1705975)

Utilizator catcatCatalina catcat Data 21 mai 2016 10:46:13
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb
#include <stdio.h>
#include <string.h>
#include <vector>
#include <queue>

#define MAX_NODES 100
#define INF 999999999

int main(void) {
    FILE * fin = fopen("royfloyd.in", "r");
    FILE * fout = fopen("royfloyd.out", "w");
    
    int dist[MAX_NODES + 1][MAX_NODES + 1];
    int n, c;
    
    fscanf(fin, "%d", &n);
    
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            fscanf(fin, "%d", &c);
            if (c == 0) {
                dist[i][j] = INF;
            } else {
                dist[i][j] = c;
            }
        }
    }
    
    for (int k = 0; k < n; k++) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (i != j) {
                    if (dist[i][j] > dist[i][k] + dist[k][j]) {
                        dist[i][j] = dist[i][k] + dist[k][j];
                    }
                }
            }
        }
    }
    
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (dist[i][j] < INF) {
                fprintf(fout, "%d ", dist[i][j]);
            } else {
                fprintf(fout, "0 ");
            }
        }
        fprintf(fout, "\n");
    }
    
    fclose(fin);
    fclose(fout);
}