Cod sursa(job #1193916)

Utilizator stanescu.raduRadu Stanescu stanescu.radu Data 2 iunie 2014 13:19:21
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#define MAX_N 105

using namespace std;

ifstream f ("royfloyd.in");
ofstream g ("royfloyd.out");

int v[MAX_N][MAX_N], n;

void read ()
{
	f >> n;
	
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			f >> v[i][j];
	f.close();
}

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

void write ()
{
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
			g << v[i][j] << " ";
		g << "\n";
	}
}

int main ()
{
	read ();
	RF ();
	write ();
	f.close();
	g.close();
	return 0;
}