// Exemplificare algortim Floyd-Marshall
#include <fstream>
using namespace std;
const int N = 100;
int m[N][N];
int n;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
void citire();
void floyd();
void show();
int main ()
{
citire();
floyd();
show();
return 0;
}
void citire()
{
int i, j;
fin >> n;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
fin >> m[i][j];
}
}
void floyd()
{
int i, j, k;
for(k= 0; k<n; k++)
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
if (((m[i][j] > m[i][k] + m[k][j]) || !m[i][j])&& m[i][k] && m[k][j] &&i!=j )
m[i][j] = m[i][k] + m[k][j];
}
}
void show()
{
int i, j;
for(i=0; i<n ;i++)
{
for(j=0; j<n; j++)
fout << m[i][j] << ' ';
fout << '\n';
}
}