Cod sursa(job #495064)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 23 octombrie 2010 20:37:26
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream.h>
#define INF 1000000
#define NMAX 102

int a[NMAX][NMAX], i, n;

void citeste()
{
	ifstream f("royfloyd.in");
	int i, j;
	f>>n;
	for (i=1; i<=n; ++i)
		for(j=1; j<=n; ++j)
		{
			f>>a[i][j];
			if (a[i][j]==0 && i!=j) a[i][j]=INF;
		}
	f.close();
}

int min(int x,int y)
{
	if (x<y) return x;
	else return y;
}

void royfloyd()
{
	int k ,i, j;
	
	for(k=1; k<=n; ++k)
		for (i=1; i<=n; ++i)
			for (j=1; j<=n; ++j)
				a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
}

void afiseaza()
{
	ofstream g("royfloyd.out");
	int i, j;
	for(i=1; i<=n; ++i)
	{
		g<<a[i][1];
		for (j=2; j<=n; ++j) g<<" "<<a[i][j];
		g<<"\n";
	}
	g.close();
}
	
int main()
{
	citeste();
	royfloyd();
	afiseaza();
	return 0;
}