Cod sursa(job #1705938)

Utilizator m.scarlat95Scarlat Marius-George m.scarlat95 Data 21 mai 2016 08:56:19
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
#define MAX	101

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][k] > 0 && m[k][j] > 0 ) && ( m[i][j] > m[i][k] + m[k][j] ) )
				{
					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];
		}
	}

	floyd_warshall();

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

	fclose( stdin );
	fclose( stdout );
}