Cod sursa(job #1007879)

Utilizator pulseOvidiu Giorgi pulse Data 9 octombrie 2013 20:37:27
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 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] || !a[i][j]) && i!=j)
					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;
}