Pagini recente » Cod sursa (job #1729586) | Cod sursa (job #217728) | Cod sursa (job #2231692) | Cod sursa (job #2734701) | Cod sursa (job #2633891)
#include <fstream>
#include <iostream>
#define NMAX 100
#define INF 1e9
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int fw[NMAX][NMAX];
void read(int v[NMAX][NMAX], int& n) {
fin >> n;
for (int i = 0;i < n;++i)
for (int j = 0;j < n;++j)
fin >> v[i][j];
}
void init(int v[NMAX][NMAX],int n) {
for (int i = 0;i < n;++i)
for (int j = 0;j < n;++j)
if (v[i][j] == 0)
fw[i][j] = INF;
else
fw[i][j] = v[i][j];
}
void floyd_warshall(int n) {
for (int k = 0;k < n;++k)
for (int i = 0;i < n;++i)
for (int j = 0;j < n;++j)
if (i!=j && fw[i][k]!=INF && fw[k][j]!=INF && fw[i][j] > fw[i][k] + fw[k][j])
fw[i][j] = fw[i][k] + fw[k][j];
for (int i = 0;i < n;++i) {
for (int j = 0;j < n;++j)
if (fw[i][j] == INF) fout << "0 ";
else fout << fw[i][j] << ' ';
fout << '\n';
}
}
int main()
{
int n, v[NMAX][NMAX];
read(v, n);
init(v, n);
floyd_warshall(n);
return 0;
}