Cod sursa(job #1997710)

Utilizator Corina1997Todoran Ana-Corina Corina1997 Data 5 iulie 2017 08:54:02
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>

std::ifstream is("royfloyd.in");
std::ofstream os("royfloyd.out");

int graph_distance[101][101];
int N;

void RoyFloyd();

int main()
{
	is >> N;

	int x;
	for(int i = 1; i <= N; i++)
		for (int j = 1; j <= N; j++)
		{
			is >> x;
			graph_distance[i][j] = x;
		}

	RoyFloyd();

	for (int i = 1; i <= N; i++)
	{
		for (int j = 1; j <= N; j++)
            os << graph_distance[i][j] << ' ';
		os << '\n';
	}

	is.close();
	os.close();
	return 0;
}

void RoyFloyd()
{
	for (int k = 1; k <= N; k++)
		for (int i = 1; i <= N; i++)
			for (int j = 1; j <= N; j++)
				if ( i!= j && graph_distance[i][k] && graph_distance[k][j] && (graph_distance[i][j] > graph_distance[i][k] + graph_distance[k][j] || !graph_distance[i][j]))
					graph_distance[i][j] = graph_distance[i][k] + graph_distance[k][j];
}