Pagini recente » Cod sursa (job #244740) | Monitorul de evaluare | Cod sursa (job #2201253) | Cod sursa (job #1957553) | Cod sursa (job #144633)
Cod sursa(job #144633)
#include <stdio.h>
#include <fstream>
using namespace std;
#define in "royfloyd.in"
#define out "royfloyd.out"
#define dim 101
int N;
int A[dim][dim];
inline int Minim(int a, int b) {
if ( a < b ) return a;
return b;
}
int main()
{
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf("%d", &N);
for ( int i = 1; i <= N; i++ )
for ( int j = 1; j <= N; j++ )
scanf("%d", &A[i][j]);
for ( int k = 1; k <= N; k++ )
for ( int i = 1; i <= N; i++ )
for ( int j = 1; j <= N; j++ )
{
if ( i == j ) continue;
if ( A[i][k] > 0 && A[k][j] > 0 )
{
if ( A[i][j] == 0 ) A[i][j] = A[i][k] + A[k][j];
else A[i][j] = Minim( A[i][j], A[i][k] + A[k][j] );
}
}
for ( int i = 1; i <= N; i++, printf("\n") )
for ( int j = 1; j <= N; j++ )
printf("%d ", A[i][j]);
}