Pagini recente » Cod sursa (job #2702146) | Cod sursa (job #3217102) | Cod sursa (job #2987096) | Cod sursa (job #2498646) | Cod sursa (job #1112371)
#include <iostream>
#include <fstream>
using namespace std;
#define PInfinit 1.e20
/**
* Roy Floyd
*
* Implementarea algoritmului Roy-Floyd pentru aflarea drumurilor
* de cost minim pentru un graf memorat prin matricea costurilor.
*/
void Roy_Floyd(int A[101][101], int n)
{
for (int k = 1; k <= n; k++)
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (A[i][k] && A[k][j] && A[i][j] > A[i][k] + A[k][j])
A[i][j] = A[i][k] + A[k][j];
}
int main()
{
int a[101][101]; // Matricea costurilor
int n;
ifstream f("royfloyd.in");
f >> n;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
f >> a[i][j];
f.close();
Roy_Floyd(a, n);
ofstream g("royfloyd.out");
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
g << a[i][j] << " ";
g << '\n';
}
g.close();
return 0;
}