Cod sursa(job #2271593)

Utilizator IulianBobocBoboc Iulian IulianBoboc Data 28 octombrie 2018 22:16:48
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
using namespace std;
#define NMAX 101
int N, i, j, k, A[NMAX][NMAX];

void FloydDashWarshal() {
	for (k = 1; k <= N; ++k) {
		for (i = 1; i <= N; ++i) {
			if (i != k) {
				for (j = 1; j <= N; ++j) {
					if (k != j && i != j && A[i][j] > A[i][k] + A[k][j]) {
						A[i][j] = A[i][k] + A[k][j];
					}
				}
			}
		}
	}
}

void printSolution(ofstream &fout) {
	for (i = 1; i <= N; ++i) {
		for (j = 1; j <= N; ++j) {
			fout << A[i][j] << " ";
		}
		fout << "\n";
	}
}

void readDataAndCompute(ifstream &fin, ofstream &fout) {
	fin >> N;
	for (i = 1; i <= N; ++i) {
		for (j = 1; j <= N; ++j) {
			fin >> A[i][j];
		}
	}
	FloydDashWarshal();
}
int main() {
	ifstream fin("royfloyd.in");
	ofstream fout("royfloyd.out");
	readDataAndCompute(fin, fout);
	printSolution(fout);
	fin.close();
	fout.close();
	return 0;
}