Pagini recente » Cod sursa (job #837170) | Cod sursa (job #674807) | Cod sursa (job #3216636) | Cod sursa (job #438030) | Cod sursa (job #1437831)
#include <cstdio>
using namespace std;
#define Nmax 102
FILE *f = fopen ( "royfloyd.in", "r" );
FILE *g = fopen ( "royfloyd.out", "w" );
int D[Nmax][Nmax];
bool conditie ( int i, int j, int k ){
if ( i != j && i != k && j != k &&
D[i][k] && D[k][j] &&
( !D[i][j] || D[i][j] > D[i][k] + D[k][j] ) )
return 1;
return 0;
}
int main(){
int N;
fscanf ( f, "%d", &N );
for ( int i = 1; i <= N; ++i )
for ( int j = 1; j <= N; ++j )
fscanf ( f, "%d", &D[i][j] );
for ( int k = 1; k <= N; ++k )
for ( int i = 1; i <= N; ++i )
for ( int j = 1; j <= N; ++j )
if ( conditie ( i, j, k ) )
D[i][j] = D[i][k] + D[k][j];
for ( int i = 1; i <= N; ++i ){
for ( int j = 1; j <= N; ++j ){
fprintf ( g, "%d ", D[i][j] );
}
fprintf ( g, "\n" );
}
return 0;
}