Pagini recente » Cod sursa (job #1398357) | Cod sursa (job #2610780) | Cod sursa (job #2461702) | Cod sursa (job #589379) | Cod sursa (job #2814079)
#include <iostream>
#include <fstream>
#include <vector>
#define inf 10000
#define Max 100001
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int matrix[105][105], N, M;
class Graph{
private:
int NumberOfNodes, NumberOfEdges;
vector<int> adjacencyList[Max];
public:
Graph(int N, int M); // constructor
void RoyFloyd(int matrix[105][105]);
};
// constructor
Graph :: Graph(int N, int M)
{
NumberOfNodes = N;
NumberOfEdges = M;
}
void Graph :: RoyFloyd(int matrix[105][105])
{
// citire si initializare
for ( int i = 1; i <= N; i++ )
for ( int j = 1; j <= N; j++ )
fin >> matrix[i][j];
for ( int i = 1; i <= N; i++ )
for ( int j = 1; j <= N; j++ )
if ( i == j ) matrix[i][j] = 0;
else
if ( matrix[i][j] == 0 && i != j)
matrix[i][j] = inf;
// Roy-Floyd
for ( int k = 1; k <= N; k++ )
for ( int i = 1; i <= N; i++ )
for ( int j = 1; j <= N; j++ )
if ( matrix[i][j] > matrix[i][k] + matrix[k][j] )
matrix[i][j] = matrix[i][k] + matrix[k][j];
// afisare
for ( int i = 1; i <= N; i++ )
for ( int j = 1; j <= N; j++ )
if ( matrix[i][j] == inf ) matrix[i][j] = 0;
for ( int i = 1; i <= N; i++ )
{
for ( int j = 1; j <= N; j++ )
fout << matrix[i][j] << " ";
fout<<"\n";
}
}
int main()
{
fin >> N;
Graph G(N,0);
G.RoyFloyd(matrix);
return 0;
}