Pagini recente » Cod sursa (job #2556447) | Cod sursa (job #136646) | Cod sursa (job #2288693) | Cod sursa (job #1012620) | Cod sursa (job #2887668)
#include <vector>
#include <string>
#include <fstream>
#define oo 0x3f3f3f3f
using std::vector;
class RoyFloyd {
private:
int n;
vector<int>* graf;
std::string input_file;
std::string output_file;
void read() {
std::ifstream in(input_file);
in >> n;
graf = new vector<int>[n];
for (int i = 0; i < n; ++i) {
graf[i].resize(n);
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
in >> graf[i][j];
if (graf[i][j] == 0) {
graf[i][j] = oo;
}
}
}
in.close();
}
void solve() {
read();
for (int k = 0; k < n; ++k) {
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (i != j) {
graf[i][j] = std::min(graf[i][j], graf[i][k] + graf[k][j]);
}
}
}
}
}
public:
RoyFloyd(const std::string& input, const std::string& output) : input_file{ input }, output_file{ output }{};
~RoyFloyd() {
delete[] graf;
}
void print() {
solve();
std::ofstream out(output_file);
for (int i = 0; i < n; ++i, out << '\n') {
for (int j = 0; j < n; ++j) {
if (graf[i][j] == oo) {
out << 0 << " ";
}
else {
out << graf[i][j] << " ";
}
}
}
out.close();
}
};
int main() {
RoyFloyd r = RoyFloyd{ "royfloyd.in", "royfloyd.out" };
r.print();
return 0;
}