Cod sursa(job #1434710)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 11 mai 2015 10:30:49
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <cstdio>
#define DIM 128
using namespace std;

FILE *fin = fopen("royfloyd.in" ,"r");
FILE *fout= fopen("royfloyd.out","w");

int N, D[DIM][DIM];

void SetUp(){
    fscanf(fin, "%d", &N);
    for(int i = 1; i <= N; i ++)
        for(int j = 1; j <= N; j ++)
            fscanf(fin, "%d", &D[i][j]);
    return;
}

void RoyFloyd(){
    for(int x = 1; x <= N; x ++)
        for(int y = 1; y <= N; y ++)
            for(int z = 1; z <= N; z ++){
                if(D[x][z] && D[z][x] && (D[x][y] > D[x][z] + D[z][y] || !D[x][y]) && x != y)
                    D[x][y] = D[x][z] + D[z][y];
            }
    return;
}

void Finish(){
    for(int i = 1; i <= N; i ++){
        for(int j = 1; j <= N; j ++)
            fprintf(fout, "%d ", D[i][j]);
        fprintf(fout, "\n");
    }
    return;
}

int main(){
    SetUp();
    RoyFloyd();
    Finish();
    return 0;
}