Cod sursa(job #664671)

Utilizator impulseBagu Alexandru impulse Data 20 ianuarie 2012 17:30:19
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 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)
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(M[i][j] != 0)
                    M[i][j] = MIN(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;
}