Pagini recente » Cod sursa (job #2591316) | Cod sursa (job #2604777) | Cod sursa (job #3261327) | Cod sursa (job #2897236) | Cod sursa (job #1404184)
#include <fstream>
#include <algorithm>
const int MAX_N(101);
int n;
int Graph [MAX_N] [MAX_N];
int Dp [MAX_N] [MAX_N];
inline void Read (void)
{
std::ifstream input("royfloyd.in");
input >> n;
for (int i(1) ; i <= n ; ++i)
for (int j(1) ; j <= n ; ++j)
input >> Graph[i][j];
input.close();
}
inline void Print (void)
{
std::ofstream output("royfloyd.out");
for (int i(1) ; i <= n ; ++i)
{
for (int j(1); j <= n ; ++j)
output << Dp[i][j] << ' ' ;
output.put('\n');
}
output.close();
}
inline void Dynamic (void)
{
for (int i(1) ; i <= n ; ++i)
for (int j(1) ; j <= n ; ++j)
Dp[i][j] = Graph[i][j];
for (int k(1) ; k <= n ; ++k)
for (int i(1) ; i <= n ; ++i)
for (int j(1) ; j <= n ; ++j)
if (i != k && j != k && i != j && Dp[i][k] && Dp[k][j])
Dp[i][j] = (Dp[i][j] ? std::min(Dp[i][j],Dp[i][k] + Dp[k][j]) : Dp[i][k] + Dp[k][j]);
}
int main (void)
{
Read();
Dynamic();
Print();
return 0;
}