Pagini recente » Cod sursa (job #1394649) | Cod sursa (job #857368) | Cod sursa (job #725257) | Cod sursa (job #2604007) | Cod sursa (job #2430393)
#include <iostream>
#include <fstream>
using namespace std;
void print(ofstream& out, int size, int **matrix) {
for (int i = 0 ; i < size ; ++i) {
for (int j = 0 ; j < size ; ++j) {
out << matrix[i][j] << " ";
}
out << "\n";
}
}
void floydWarshall(int size, int **matrix) {
for (int k = 0 ; k < size ; ++k) {
for (int i = 0 ; i < size ; ++i) {
for (int j = 0 ; j < size ; ++j) {
if (matrix[i][k] == 0 || matrix[k][j] == 0 || i == j) {
continue;
}
if (matrix[i][j] > matrix[i][k] + matrix[k][j] ||
matrix[i][j] == 0) {
matrix[i][j] = matrix[i][k] + matrix[k][j];
}
}
}
}
}
int main() {
ifstream in;
in.open("royfloyd.in");
ofstream out;
out.open("royfloyd.out");
if (!in || !out) {
cout << "Error opening files!\n";
return -1;
}
int size;
in >> size;
int **matrix;
matrix = new int*[size];
for (int i = 0 ; i < size ; ++i) {
matrix[i] = new int[size];
}
for (int i = 0 ; i < size ; ++i) {
for (int j = 0 ; j < size ; ++j) {
in >> matrix[i][j];
}
}
floydWarshall(size, matrix);
print(out, size, matrix);
for (int i = 0 ; i < size ; ++i) {
delete[] matrix[i];
}
delete[] matrix;
in.close();
out.close();
return 0;
}