Cod sursa(job #615134)

Utilizator vladbagrinVlad Bagrin vladbagrin Data 8 octombrie 2011 17:59:19
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <algorithm>

#define INPUT "royfloyd.in"
#define OUTPUT "royfloyd.out"
#define MAX 105
#define SUCCESS 0

using namespace std;

int main() {
	int n, g[MAX][MAX];
	ifstream in(INPUT, ifstream::in);
	in >> n;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)
			in >> g[i][j];
	in.close();
	ofstream out(OUTPUT, ofstream::out);
	for (int k = 0; k < n; k++)
		for (int i = 0; i < n; i++)
			for (int j = 0; j < n; j++)
				if (i != j && g[i][k] && g[k][j] &&
						(g[i][j] > g[i][k] + g[k][j] || !g[i][j]))
					g[i][j] = g[i][k] + g[k][j];
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++)
			out << g[i][j] << " ";
		out << "\n";
	}
	out.flush();
	out.close();
	return SUCCESS;
}