Pagini recente » Cod sursa (job #2763715) | Cod sursa (job #2602677) | Cod sursa (job #2660309) | Cod sursa (job #2966204) | Cod sursa (job #2659457)
#include <bits/stdc++.h>
using namespace std;
ifstream fin( "royfloyd.in" );
ofstream fout( "royfloyd.out" );
const int NMAX = 105;
const int INF = 2000000001;
int N;
int Ad[NMAX][NMAX];
int best[NMAX][NMAX];
void Read()
{
fin >> N;
for( int i = 1; i <= N; ++i )
for( int j = 1; j <= N; ++j )
fin >> Ad[i][j];
}
void Do()
{
for( int i = 1; i <= N; ++i )
for( int j = 1; j <= N; ++j )
best[i][j] = INF;
for( int i = 1; i <= N; ++i )
for( int j = 1; j <= N; ++j )
if( Ad[i][j] ) best[i][j] = Ad[i][j];
for( int i = 1; i <= N; ++i )
for( int k = 1; k <= N; ++k )
for( int j = 1; j <= N; ++j )
if( i != j && j != k && i != j )
if( Ad[i][k] && Ad[k][j] && best[i][j] > Ad[i][k] + Ad[k][j] )
best[i][j] = Ad[i][k] + Ad[k][j];
for( int i = 1; i <= N; ++i ) {
for( int j = 1; j <= N; ++j )
( best[i][j] != INF ) ? fout << best[i][j] << ' ' : fout << "0 ";
fout << '\n';
}
}
int main()
{
Read();
Do();
return 0;
}