Cod sursa(job #1705941)

Utilizator m.scarlat95Scarlat Marius-George m.scarlat95 Data 21 mai 2016 09:05:36
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define MAX	101
#define INF	9999

unsigned int n;
int m[MAX][MAX];
	

void floyd_warshall()
{
	for( unsigned int k = 1; k <= n; ++k )
	{
		for( unsigned int i = 1; i <= n; ++i )
		{
			for( unsigned int j = 1; j <= n; ++j )
			{
				/*
				if ( ( m[i][j] > m[i][k] + m[k][j] ) && ( i != j ) )
				{
					m[i][j] = m[i][k] + m[k][j];
				}
				*/
				if( i != j )
				{
					m[i][j] = std::min(m[i][j], m[i][k] + m[k][j]);
				}
			}
		}
	}
}

int main( void )
{
	freopen( "royfloyd.in", "r", stdin );
    freopen( "royfloyd.out", "w", stdout );

	std::cin >> n;
	for( unsigned int i = 1; i <= n; ++i )
	{
		for( unsigned int j = 1; j <= n; ++j )
		{
			std::cin >> m[i][j];
			if( m[i][j] == 0 )
			{
				m[i][j] = INF;
			}
		}
	}

	floyd_warshall();

	for( unsigned int i = 1; i <= n; ++i )
	{
		for( unsigned int j = 1; j <= n; ++j )
		{
			if( m[i][j] == INF )
				std::cout << 0 << ' ';
			else
				std::cout << m[i][j] << ' ';
		}
		std::cout << "\n";
	}

	fclose( stdin );
	fclose( stdout );
}