Pagini recente » Cod sursa (job #3240188) | Cod sursa (job #1995573) | Cod sursa (job #219485) | Cod sursa (job #859105) | Cod sursa (job #2516559)
#include <bits/stdc++.h>
using namespace std;
ifstream fin( "royfloyd.in" );
ofstream fout( "royfloyd.out" );
const int NMAX = 100;
const int INF = 2000000000;
int N;
int mat[NMAX + 2][NMAX + 2];
void Read()
{
fin >> N;
for( int i = 1; i <= N; ++i )
for( int j = 1; j <= N; ++j )
fin >> mat[i][j];
}
void Do()
{
for( int k = 1; k <= N; ++k )
for( int i = 1; i <= N; ++i )
for( int j = 1; j <= N; ++j )
if( i != j && mat[i][k] > 0 && mat[k][j] > 0 ) /// este posibil drumul I -> K -> J
if( mat[i][k] + mat[k][j] < mat[i][j] || mat[i][j] == 0 )
mat[i][j] = mat[i][k] + mat[k][j];
for( int i = 1; i <= N; ++i )
{
for( int j = 1; j <= N; ++j )
fout << mat[i][j] << ' ';
fout << '\n';
}
}
int main()
{
Read();
Do();
return 0;
}