Cod sursa(job #539081)

Utilizator feelshiftFeelshift feelshift Data 22 februarie 2011 13:25:12
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
// http://infoarena.ro/problema/royfloyd
#include <fstream>
using namespace std;

#define maxSize 102

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

int nodes;
int matrix[maxSize][maxSize];

int main() {
	in >> nodes;

	for(int i=1;i<=nodes;i++)
		for(int k=1;k<=nodes;k++)
			in >> matrix[i][k];

	for(int k=1;k<=nodes;k++)
		for(int i=1;i<=nodes;i++)
			for(int j=1;j<=nodes;j++)
				if(matrix[i][k] && matrix[k][j] && (matrix[i][j] > matrix[i][k] + matrix[k][j] || !matrix[i][j]) && i!=j)
					matrix[i][j] = matrix [i][k] + matrix[k][j];

	for(int i=1;i<=nodes;i++) {
		for(int k=1;k<=nodes;k++)
			out << matrix[i][k] << " ";
		out << "\n";
	}

	in.close();
	out.close();

	return (0);
}