Pagini recente » Monitorul de evaluare | Cod sursa (job #3365636) | Cod sursa (job #3366413) | Cod sursa (job #3366405) | Cod sursa (job #3366424)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX = 256+10;
long long dist[NMAX][NMAX];
int main()
{
ifstream cin ("royfloyd.in");
ofstream cout ("royfloyd.out");
int n;
cin >> n;
for (int i=1; i<=n; i++)
{
for (int j=1; j<=n; j++)
{
cin >> dist[i][j];
if ((dist[i][j] == 0) && (i != j)) dist[i][j] = 1e17;
}
}
for (int k=1; k<=n; k++)
{
for (int i=1; i<=n; i++)
{
for (int j=1; j<=n; j++)
{
if ((dist[i][k] == 1e17) || (dist[k][j] == 1e17)) continue;
dist[i][j] = min(dist[i][j], dist[i][k]+dist[k][j]);
}
}
}
for (int i=1; i<=n; i++)
{
for (int j=1; j<=n; j++)
{
cout << dist[i][j] << " ";
}
cout << '\n';
}
return 0;
}