Pagini recente » Cod sursa (job #2361268) | Cod sursa (job #3038567) | Cod sursa (job #2885849) | Cod sursa (job #325084) | Cod sursa (job #3260238)
#include <iostream>
#include <limits.h>
#define lol long long
#define MAX_N 105
using namespace std;
lol matrix[MAX_N][MAX_N];
lol dp[MAX_N][MAX_N];
int main()
{
FILE *fin = fopen("royfloyd.in", "r");
FILE *fout = fopen("royfloyd.out", "w");
int n;
fscanf(fin, "%d", &n);
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
fscanf(fin, "%lld", &matrix[i][j]);
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if (i != j)
dp[i][j] = (matrix[i][j] == 0) ? LLONG_MAX : matrix[i][j];
else
dp[i][j] = 0;
for (int k = 0; k < n; k++)
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if (dp[i][k] != LLONG_MAX && dp[k][j] != LLONG_MAX)
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
fprintf(fout, "%lld ", (dp[i][j] == LLONG_MAX) ? 0 : dp[i][j]);
fprintf(fout, "\r\n");
}
}