Pagini recente » Cod sursa (job #1674351) | Cod sursa (job #1707207) | Cod sursa (job #1447109) | Cod sursa (job #2290336) | Cod sursa (job #1204282)
#include <fstream>
#define in "royfloyd.in"
#define out "royfloyd.out"
#define Max_Size 109
std :: ifstream f(in);
std :: ofstream g(out);
class RoyFloyd
{
protected :
int N, RF[Max_Size][Max_Size];
public :
void Read ();
void Solve();
void Write();
};
void RoyFloyd :: Read ()
{
f >> N;
for(int i = 1; i <= N; ++i)
for(int j = 1; j <= N; ++j){
f >> RF[i][j];
if(i != j && !RF[i][j]) RF[i][j] = Max_Size * Max_Size;
}
}
void RoyFloyd :: Solve ()
{
for(int k = 1; k <= N; ++k)
for(int i = 1; i <= N; ++i)
for(int j = 1; j <= N; ++j)
if(i != j && RF[i][j] > RF[i][k] + RF[k][j] && RF[i][k] && RF[k][j])
RF[i][j] = RF[i][k] + RF[k][j];
}
void RoyFloyd :: Write ()
{
for(int i = 1; i <= N; ++i){
for(int j = 1; j <= N; ++j)
g << RF[i][j] << ' ';
g << '\n';
}
}
int main()
{
RoyFloyd obj;
obj.Read();
obj.Solve();
obj.Write();
return 0;
}