Cod sursa(job #186253)

Utilizator backqweryTester Pawl backqwery Data 27 aprilie 2008 01:53:43
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.46 kb
#include <fstream.h>

ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");

double pinf=1.e20;
int n;
float a[110][110];

//void Drum(int , int);
int main()
{
	int i=1, j=1, c;
	fin>>n;

	for(i=1; i<=n; i++)
		for(j=1; j<=n; j++)
		{
			fin>>a[i][j];
			if(a[i][j]==0 && i!=j)
				a[i][j]=pinf;
		}

/************************************************************************

	fout<<"Matricea ponderilor: ";
	for(i=1; i<=n; i++)
	{
		for(j=1; j<=n; j++)
			if(a[i][j]<pinf)
				fout<<a[i][j]<<" ";
			else
				fout<<"o ";
		fout<<"\n                     ";
	}
/************************************************************************/

	int k;
	for(k=1; k<=n; k++)
		for(i=1; i<=n; i++)
			for(j=1; j<=n; j++)
				if(a[i][j]>a[i][k]+a[k][j])
					a[i][j]=a[i][k]+a[k][j];

//	fout<<"\nMatricea ponderilor: ";
	for(i=1; i<=n; i++)
	{
		for(j=1; j<=n; j++)
			if(a[i][j]<pinf)
				fout<<a[i][j]<<" ";
			else
				fout<<"0 ";
		fout<<"\n";
	}
	return 0;
}
/**************************************************************
	fout<<"\nDrumul de la "<<inc<<" la "<<sf<<" are lungimea "<<a[inc][sf]<<"\n"<<inc<<" ";

	Drum(inc, sf);

	return 0;
}
void Drum(int i, int j)
{
	int k=1, gasit=0;
	while(k<=n && !gasit)
	{
		if(i!=k && j!=k && a[i][j]==a[i][k]+a[k][j])
		{
			Drum(i, k);
			Drum(k, j);
			gasit=1;
		}
		k++;
	}
	if(!gasit)
		fout<<j<<" ";
}                                                              /*/