Pagini recente » Cod sursa (job #32679) | Cod sursa (job #144410) | Cod sursa (job #1057231) | Cod sursa (job #1424752) | Cod sursa (job #144630)
Cod sursa(job #144630)
#include <stdio.h>
#include <values.h>
#define nmax 128
int DMIN[nmax][nmax], D[nmax][nmax], K[nmax][nmax], MAXS[nmax][nmax], N;
int main()
{
int i, j, k;
freopen("rf.in", "r", stdin);
freopen("rf.out", "w", stdout);
scanf("%d", &N);
for (i = 1; i <= N; ++i)
for (j = 1; j <= N; ++j)
scanf("%d", &D[i][j]);
// distanta minima
for (i = 1; i <= N; ++i)
for (j = 1; j <= N; ++j)
{
DMIN[i][j] = D[i][j];
MAXS[i][j] = i==j?0:1;
}
for (k = 1; k <= N; ++k)
for (i = 1; i <= N; ++i)
for (j = 1; j <= N; ++j)
if
(
DMIN[i][k] + DMIN[k][j] < DMIN[i][j] ||
DMIN[i][k] + DMIN[k][j] == DMIN[i][j] &&
MAXS[i][k] + MAXS[k][j] >= MAXS[i][j]
)
{
K[i][j] = k;
DMIN[i][j] = DMIN[i][k] + DMIN[k][j];
MAXS[i][j] = MAXS[i][k] + MAXS[k][j];
}
for (i = 1; i <= N; ++i)
{
for (j = 1; j < N; ++j)
printf("%d ", DMIN[i][j]);
printf("%d\n", DMIN[i][j]);
}
// for (i = 1; i <= N; ++i)
// {
// for (j = 1; j < N; ++j)
// printf("%d ", MAXS[i][j]);
// printf("%d\n", MAXS[i][j]);
// }
return 0;
}