void Floyd(int arc[][10], int dist[][10], int n)
{
int i, j, k;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
dist[i][j] = arc[i][j];
}
}
for (k = 0; k < n; k++)
{
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (dist[i][k] + dist[k][j] < dist[i][j])
dist[i][j] = dist[i][k] + dist[k][j];
}
}
}
cout << endl;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
cout << dist[i][j] << " ";
}
int main()
{
int arc[10][10];
int dist[10][10];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
cin >> arc[i][j];
if (arc[i][j] == -1)
arc[i][j] = INF;
}
}
Floyd(arc, dist, 3);
return 0;
}