Pagini recente » Cod sursa (job #1312809) | Cod sursa (job #321498) | Cod sursa (job #2561730) | Cod sursa (job #95094) | Cod sursa (job #2813663)
#include <bits/stdc++.h>
#define NMax 101
#define inf 2e9
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
class graf
{
int nrNoduri, nrMuchii;
bool orientat;
public:
graf(int n, int m, bool o); // constructor
//Roy-Floyd
void Roy_Floyd(int matrice[NMax][NMax]);
};
int N, M;
graf :: graf(int n, int m, bool o)
{
nrNoduri = n;
nrMuchii = m;
orientat = o;
}
void graf :: Roy_Floyd(int matrice[NMax][NMax])
{
for(int k = 1; k <= nrNoduri; ++k)
for(int i = 1; i <= nrNoduri; ++i)
for(int j = 1; j <= nrNoduri; ++j)
if(matrice[i][j] > matrice[i][k] + matrice[k][j] && i != j)
matrice[i][j] = matrice[k][j] + matrice[i][k];
// afisare
for(int i = 1; i <= nrNoduri; ++i)
{
for(int j = 1; j <= nrNoduri; ++j)
fout << matrice[i][j] << " ";
fout << "\n";
}
}
int main()
{
fin >> N;
graf G(N, 0, 0);
int matrice[NMax][NMax];
// citire
for(int i = 1; i <= N; ++i)
for(int j = 1; j <= N; ++j)
fin >> matrice[i][j];
// initializare
for(int i = 1; i <= N; ++i)
for(int j = 1; j <= N; ++j)
if(i == j)
matrice[i][j] = 0;
else if(matrice[i][j] == 0 && i != j)
matrice[i][j] = inf;
G.Roy_Floyd(matrice);
return 0;
}