Pagini recente » Cod sursa (job #2490723) | Cod sursa (job #3198841) | Cod sursa (job #2198989) | Cod sursa (job #250866) | Cod sursa (job #1347773)
#include <fstream>
#include <algorithm>
#define nmax 101
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int n,x;
int v[nmax][nmax],d1[nmax][nmax],d2[nmax][nmax];
int main()
{
fin >> n;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
fin >> x;
if (x == 0 && i != j)
v[i][j] = 3200000;
else
v[i][j] = x;
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
d1[i][j] = v[i][j];
}
}
for (int k = 1; k <= n; k++)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
d2[i][j] = 0;
}
}
for (int i = 1; i<=n; i++)
{
for (int j = 1; j <= n; j++)
{
d2[i][j] = min(d1[i][j], d1[i][k] + d1[k][j]);
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
d1[i][j] = d2[i][j];
}
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
if (d1[i][j] == 3200000)
fout << '0' << ' ';
else
fout << d1[i][j] << ' ';
}
fout << '\n';
}
}