Cod sursa(job #524896)

Utilizator tudorsTudor Siminic tudors Data 23 ianuarie 2011 15:52:43
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <iostream>
#include <fstream>
using namespace std;
int i,j,A[105][105],k,n;

ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
void citire()
{
	f>>n;
	for (i=1;i<=n;i++)
		for (j=1;j<=n;j++)
			f>>A[i][j];
}

void afisare()
{
	for (i=1;i<=n;i++)
	{
		for (j=1;j<=n;j++)
			g<<A[i][j]<<" ";
		g<<endl;
	}
}

void royfloyd()
{
	for (k=1;k<=n;k++)
		for (i=1;i<=n;i++)
			for (j=1;j<=n;j++)
				if (A[i][k] && A[k][j] && (A[i][k]+A[k][j]<A[i][j]) || !A[i][j] && i!=j)
					A[i][j]=A[i][k]+A[k][j];
}

int main()
{
	citire();
	royfloyd();
	afisare();
	return 0;
}