Pagini recente » Cod sursa (job #526288) | Cod sursa (job #1903632) | Cod sursa (job #576705) | Cod sursa (job #1063541) | Cod sursa (job #2611501)
// Copyright Radu Nichita 2020 [email protected]
#include <bits/stdc++.h>
#define NMAX 102
#define kINF (1<<30)
#define NO_PARENT -1
using namespace std;
class Task {
int N;
int d[NMAX][NMAX];
void read_input() {
int src, dst, cost;
std::ifstream in("royfloyd.in");
in >> N; // dimensiune graf
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
int c;
in >> c;
if (c == 0) {
d[i][j] = kINF;
} else {
d[i][j] = c;
}
}
}
in.close();
}
void getResult() {
RoyFloyd();
}
void RoyFloyd() {
for (int k = 1; k <= N; k++) {
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
if (i != j && d[i][k] + d[k][j] < d[i][j] && d[k][j] != kINF) {
d[i][j] = d[i][k] + d[k][j];
}
}
}
}
}
void print() {
std::ofstream out("royfloyd.out");
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
if (d[i][j] == kINF) {
out<<"0 ";
} else {
out<<d[i][j]<<" ";
}
}
out<<"\n";
}
out.close();
return;
}
public:
void solve() {
read_input();
RoyFloyd();
print();
}
};
int main() {
Task* task = new Task();
task->solve();
delete(task);
return 0;
}