Pagini recente » Cod sursa (job #2488570) | Cod sursa (job #342003) | Istoria paginii utilizator/uaic_amariei_morosac_ojoc | Cod sursa (job #208819) | Cod sursa (job #2832592)
#include <fstream>
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
/* Restrictii
1 <= N <= 100*/
#define NMAX 100
#define INF 2000000
//am folosit pseudocodul algoritmului rescris de la https://ocw.cs.pub.ro/courses/pa/laboratoare/laborator-09
int n, vcost[NMAX][NMAX];
void citire(int n)
{
for (int i = 1; i <= n; ++i)
{
for (int j = 1; j <= n; ++j)
{
f >> vcost[i][j];
if (!vcost[i][j] && i != j)
vcost[i][j] = INF;
}
}
}
void FloydWarshall_si_print(int n)
{
int k;
for (k = 1; k <= n-1; ++k)
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
vcost[i][j] = min(vcost[i][j], vcost[i][k] + vcost[k][j]);
// aici k = n asadar mai jos facem ultima iteratie si gata putem face si afisarea cu ocazia asta
for (int i = 1; i <= n; ++i)
{
for (int j = 1; j <= n; ++j)
{
vcost[i][j] = min(vcost[i][j], vcost[i][k] + vcost[k][j]);
g << vcost[i][j] << ' ';
}
g << '\n';
}
}
int main() {
f >> n;
citire(n);
FloydWarshall_si_print(n);
f.close();
g.close();
return 0;
}