Cod sursa(job #1627993)

Utilizator KKK21Alexandru Gabriel KKK21 Data 3 martie 2016 20:07:59
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>

using namespace std;

#define MAX_N 101

const char inFile[] = "royfloyd.in";
const char outFile[] = "royfloyd.out";

short int D[MAX_N][MAX_N];
int N;

inline int minim( int a, int b ){
    return  a < b ? a : b;
}

void read(){

    ifstream fin(inFile);

    fin >> N;

    for( int i = 1; i <= N; i++ )
        for( int j = 1; j <= N; j++ )
            fin >> D[i][j];

    fin.close();

}

void royfloyd(){

    for( int k = 1; k <= N; k++ )
        for( int i = 1; i <= N; i++ )
            for( int j = 1; j <= N; j++ )
                    D[i][j] = minim( D[i][j] , ((int)D[i][k]) + D[k][j] );

}

void print(){

    ofstream fout(outFile);

    for( int i = 1; i <= N; i++ ){
        for( int j = 1; j <= N; j++ )
            fout << D[i][j] << " ";
        fout << "\n";
    }

    fout.close();

}

int main()
{
    read();

    royfloyd();

    print();

    return 0;
}