Pagini recente » Istoria paginii runda/186030155234771 | Cod sursa (job #780455) | Istoria paginii runda/simulare_de_oni_4/clasament | Cod sursa (job #2328613) | Cod sursa (job #2822228)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
class graf{
private:
int n,m;
public:
graf(int n);
void roy_floyd(int M[105][105]);
};
graf :: graf(int n)
{
this->n = n;
}
void graf::roy_floyd(int M[105][105]){
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)
if(i == j)
M[i][j] = 0;
else if(M[i][j] == 0 && i != j)
M[i][j] = 10001;
for(int k=0;k<n;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if (M[i][k]+M[k][j]<M[i][j])
M[i][j]=M[i][k]+M[k][j];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if ( M[i][j] == 10001)
M[i][j]=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
if(M[i][j] != 10001)
g<<M[i][j]<<" ";
else g << 0 << " ";
g<<endl;
}
}
void royfloyd(){
int n,i ,j;
f>>n;
int M[105][105];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
f>>M[i][j];
graf G(n);
G.roy_floyd(M);
}
int main()
{
royfloyd();
return 0;
}