Cod sursa(job #1190920)

Utilizator BitOneSAlexandru BitOne Data 25 mai 2014 22:32:44
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <array>
#include <limits>
#include <fstream>
#include <cstdlib>

using namespace std;

const int NMAX = 111;
const int INF = 5111;

int main()
{
    int N;
    array<array<int, NMAX>, NMAX> C;
    ifstream in{"royfloyd.in"};
    ofstream out{"royfloyd.out"};

    in >> N;
    for(int i = 0; i < N; ++i)
    {
	for(int j = 0;j < N; ++j)
	{
	    in >> C[i][j];
	    if(!C[i][j]) C[i][j] = INF ;
	}
    }
    for(int k = 0; k < N; ++k)
    {
	for(int i = 0; i < N; ++i)
	{
	    if(k != i)
	    {
		for(int j = 0; j < N; ++j)
		{
		    if(k != j && i != j && C[i][j] > C[i][k] + C[k][j])
			C[i][j] = C[i][k] + C[k][j];
		 }
	    }
	}
    }

    for(int i = 0; i < N; ++i)
    {
	for(int j = 0; j < N; ++j)
	{
	    out << (INF == C[i][j] ? 0 : C[i][j]) << ' ';
	}
	out << '\n';
    }

    return EXIT_SUCCESS;
}