Cod sursa(job #633975)

Utilizator paul24090FMI - Balauru Paul paul24090 Data 15 noiembrie 2011 11:13:53
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>

using namespace std;

ifstream fi("royfloyd.in");
ofstream fo("royfloyd.out");

const int INF = 2<<30 - 5;

int c[102][102],n;

void citire()
{
	fi>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		{
			fi>>c[i][j];
			if(c[i][j]==0)
				c[i][j] = INF;
		}
	fi.close();
}

void royFloyd()
{
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				if(c[i][j]>c[i][k]+c[k][j])
					c[i][j] = c[i][k] + c[k][j];
	for(int i=1;i<=n;i++)
		c[i][i]=0;
}

void afisare()
{
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
			fo<<c[i][j]<<" ";
		fo<<"\n";
	}
	fo.close();
}

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