Cod sursa(job #1332920)

Utilizator Andrei_TirpescuAndrei Tirpescu Andrei_Tirpescu Data 2 februarie 2015 16:15:27
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#define NMAX 104
#define INF 10000000
using namespace std;

ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");

int n;
int A[NMAX][NMAX];

void init();
void roy_floyd();
void afisare();

int main(){

    init();
    roy_floyd();
    afisare();

    return 0;
}

void init(){
    fin>>n;



    int i, j;
    for(i = 1; i <= n; ++i)
        for(j = 1; j <= n; ++j){
            fin>>A[i][j];
            if(!A[i][j]) A[i][j] = INF;
        }


}

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

    for (k = 1; k <= n; k++)
        for (i = 1; i <= n; i++)
            for (j = 1; j <= n; j++)
                if (A[i][j] > A[i][k] + A[k][j] && A[i][k] && A[k][j] && i!=j) A[i][j] = A[i][k] + A[k][j];
}

void afisare(){
    int i, j;
    for(i = 1; i<= n ; ++i){
        for(j = 1; j<= n; ++j){
            if(A[i][j] != INF)
                fout<<A[i][j]<<" ";
            else
                fout<<0<<" ";
        }

        fout<<'\n';
    }

}