Cod sursa(job #815426)

Utilizator moscaliuc_ovidiuMoscaliuc Ovidiu moscaliuc_ovidiu Data 16 noiembrie 2012 22:26:48
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>

int Mat[100][100];

int main()
{
	std::ifstream fin("royfloyd.in");
	std::ofstream fout("royfloyd.out");

	int N;

	fin>>N;

	for (int i = 0; i < N; ++ i)
	{
		for (int j = 0; j < N; ++ j)
		{
			fin>>Mat[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)
				{
					if (Mat[i][k] && Mat[k][j])
					{
						int cost = Mat[i][k] + Mat[k][j];
						if (cost < Mat[i][j] || !Mat[i][j])
							Mat[i][j] = cost;
					}
				}			
			}
		}
	}

	for (int i = 0; i < N; ++ i)
	{
		for (int j = 0; j < N; ++ j)
		{
			fout<<Mat[i][j]<<" ";
		}

		fout<<'\n';
	}

	return 0;
}