Pagini recente » Cod sursa (job #3176827) | Cod sursa (job #2922245) | Cod sursa (job #3241619) | Rating Breaban Daniel-Vasile (BreabanDaniel) | Cod sursa (job #1963249)
#include <cstdio>
#include <algorithm>
#include <vector>
#define in "royfloyd.in"
#define out "royfloyd.out"
#define NMAX (100 + 7)
#define inf (1000000000 + 7)
using namespace std;
int n, adj[NMAX][NMAX], dp[NMAX][NMAX];
int main()
{
freopen(in, "r", stdin);
freopen(out, "w", stdout);
scanf("%d", &n);
for(int i = 1; i<= n; ++i)
{
for(int j = 1; j<= n; ++j)
{
scanf("%d", &adj[i][j]);
dp[i][j] = adj[i][j];
if(dp[i][j] == 0) dp[i][j] = inf;
}
}
for(int k = 1; k<= n; ++k)
{
for(int i = 1; i<= n; ++i)
{
if(i == k) continue;
for(int j = 1; j<= n; ++j)
{
if(i == j || j == k) continue;
if(dp[i][k] >= inf || dp[k][j] >= inf) continue;
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);
}
}
}
for(int i = 1; i<= n; ++i)
{
for(int j = 1; j<= n; ++j)
{
if(dp[i][j] == inf) printf("0 ");
else printf("%d ", dp[i][j]);
}
printf("\n");
}
return 0;
}