Cod sursa(job #1411900)

Utilizator OrolesVultur Oroles Data 1 aprilie 2015 00:03:01
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>

int m[100][100];

std::ifstream input("royfloyd.in");
std::ofstream output("royfloyd.out");

void display( int (*m)[100], int n )
{
	for ( int i = 0; i < n; ++i )
	{
		for ( int j = 0; j < n; ++j )
		{
			output << m[i][j] << " ";
		}
		output << std::endl;
	}
}


int main( int argc, char* argv[] )
{
	int N;
	input >> N;
	for ( int i = 0; i < N; ++i )
	{
		for ( int j = 0; j < N; ++j )
		{
			input >> m[i][j];
		}
	}

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

	display( m, N );

	input.close();
	output.close();
}