Pagini recente » Istoria paginii utilizator/ionguzun | Cod sursa (job #981363) | Cod sursa (job #2786238) | Cod sursa (job #2249364) | Cod sursa (job #1229154)
#include <stdio.h>
#define MAX 102
#define loop(a, b, c) for(a = b; a <= c; a++)
#define FIN "royfloyd.in"
#define FOUT "royfloyd.out"
#define SPACELESS 0x3f3f3f3f
//function prototypes
void read();
void solve();
void write();
int N;//number of vertices; 1<= N <= 100
int mat[ MAX ][ MAX ];
int main() {
read();
solve();
write();
return 0;
};
void read() {
int i,j;
freopen(FIN , "r", stdin);
scanf("%d", &N);
loop(i, 1, N)
loop(j, 1, N) {
scanf("%d", &mat[ i ][ j ]);
if(i != j && mat[ i ][ j ] == 0)
mat[ i ][ j ] = SPACELESS;
}
fclose( stdin );
};
//Roy-Floyd in action using Dynamic Programming
void solve() {
int i,
j,
k;
loop(i, 1, N) loop(j, 1, N) loop(k, 1, N)
if( mat[ i ][ j ] > mat[ i ][ k ] + mat[ k ][ j ])
mat[ i ][ j ] = mat[ i ][ k ] + mat[ k ][ j ];
};
void write() {
int i,
j;
freopen(FOUT, "w", stdout);
loop(i, 1, N) {
loop(j, 1, N) {
if(mat[ i ][ j ] == SPACELESS) printf("0 ");
else printf("%d ", mat[ i ][ j ]);
}
printf("\n");
}
fclose( stdout );
}