Pagini recente » Cod sursa (job #2559405) | Cod sursa (job #2509653) | Cod sursa (job #2347313) | Cod sursa (job #2191412) | Cod sursa (job #1463998)
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
// --- basics
#define int16 short
#define int32 int
#define int64 int long long
#define uint16 unsigned int16
#define uint32 unsigned int32
#define uint64 unsigned int64
// --- prototypes
void roy(uint32** matrix, uint16 dim);
/// --- input/output files
#define INPUT_FILE "royfloyd.in"
#define OUTPUT_FILE "royfloyd.out"
int main()
{
freopen(INPUT_FILE, "r", stdin);
freopen(OUTPUT_FILE, "w", stdout);
uint16 N;
scanf("%hd", &N);
uint32** matrix = new uint32*[N];
for (uint16 i = 0; i < N; i++)
{
matrix[i] = new uint32[N];
for (uint16 j = 0; j < N; j++)
{
scanf("%u", &(matrix[i][j]));
}
}
roy(matrix, N);
for (uint16 i = 0; i < N; i++)
{
for (uint16 j = 0; j < N; j++)
{
printf("%u ", matrix[i][j]);
}
printf("\n");
delete(matrix[i]);
}
delete(matrix);
return 0;
}
// --- functions
void roy(uint32** matrix, uint16 dim)
{
for (uint16 i = 0; i < dim; i++)
{
for (uint16 j = 0; j < dim; j++)
{
for (uint16 k = 0; k < dim; k++)
{
if ((matrix[i][j] == 0) || (matrix[j][k] == 0) || (i == k))
{
continue;
}
if ((matrix[i][k] == 0) || (matrix[i][j] + matrix[j][k] < matrix[i][k]))
{
matrix[i][k] = matrix[i][j] + matrix[j][k];
}
}
}
}
}