Cod sursa(job #664678)

Utilizator impulseBagu Alexandru impulse Data 20 ianuarie 2012 17:33:43
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream>
#include<iostream>
using namespace std;
#define filein "royfloyd.in"
#define fileout "royfloyd.out"
#define NMAX 100
#define MIN(a,b) ((a>b) ? b : a)
#define MMAX(a,b) ((a<b) ? b : a)
int M[NMAX][NMAX], N;

int main(void)
{
	ifstream fin(filein);
    fin>>N;
    for(int i = 0; i < N; i++)
        for(int j = 0; j < N; j++)
            fin>>M[i][j];
    fin.close();

    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(M[i][j]) M[i][j] = MIN(M[i][j], M[i][k] + M[k][j]);
                    else M[i][j] =  M[i][k] + M[k][j];

    ofstream out(fileout);

    for(int i = 0; i < N; i++){
        for(int j = 0; j < N; j++)
            out<<M[i][j]<<" ";
        out<<endl;
    }

    out.close();
    return 0;
}