Cod sursa(job #1141542)

Utilizator TwoOfDiamondsDaniel Alexandru Radu TwoOfDiamonds Data 12 martie 2014 22:33:08
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std;

class GrafPond
{
private:
	int mat[101][101];
	int noVertex;

public:
	void displayMat();
	void RoyFloyd();
	void citire();
};

void GrafPond::citire()
{
	ifstream IN("royfloyd.in");

	IN >> noVertex;

	for (int i = 1 ; i <= noVertex; i++)
		for (int j = 1 ; j <= noVertex; j++)
			IN >> mat[i][j];

	IN.close();
}

void GrafPond::RoyFloyd()
{
	for (int k = 1; k <= noVertex; k++)
		for (int i = 1; i <= noVertex; i++)
			for (int j = 1; j <= noVertex; j++)
				if(mat[i][k] && mat[k][j] && (mat[i][j] > mat[i][k] + mat[k][j] || !mat[i][j]) && i != j)
					mat[i][j] = mat[i][k] + mat[k][j];
}

void GrafPond::displayMat()
{

	ofstream OUT ("royfloyd.out");

	for (int i = 1; i <= noVertex; i++)
	{
		for (int j = 1; j <= noVertex; j++)
		{
			OUT << mat[i][j] << " ";
		}

		OUT << endl;
	}

	OUT.close();
}

int main()
{
	GrafPond graf;
	graf.citire();
	graf.RoyFloyd();
	graf.displayMat();

	return 0;
}