Cod sursa(job #1007873)

Utilizator pulseOvidiu Giorgi pulse Data 9 octombrie 2013 20:34:45
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>

using namespace std;

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

const int NMAX=102;

int n,a[NMAX][NMAX];

void read ()
{
	fin>>n;
	for (int i=1; i<=n; i++)
	{
		for (int j=1; j<=n; j++)
			fin>>a[i][j];
	}
}

void roy_floyd ()
{
	for (int k=1; k<=n; k++)
	{
		for (int i=1; i<=n; i++)
		{
			for (int j=1; j<=n; j++)
			{
				if (a[i][k] && a[k][j] && (a[i][j]>a[i][k]+a[k][j]) && i!=k && j!=k)
					a[i][j]=a[i][k]+a[k][j];
			}
		}
	}
}

void print ()
{
	for (int i=1; i<=n; i++)
	{
		for (int j=1; j<=n; j++)
			fout<<a[i][j]<<" ";
		fout<<"\n";
	}
}

int main ()
{
	read ();
	roy_floyd ();
	print ();

	fin.close();fout.close();
	return 0;
}