Pagini recente » Cod sursa (job #2753738) | Cod sursa (job #2080150) | Cod sursa (job #1852486) | Cod sursa (job #2853928) | Cod sursa (job #1218705)
#include <cstdio>
#define Nmax 105
#define INF 0x3f3f3f3f
using namespace std;
int adj[Nmax][Nmax],N;
int DP[Nmax][Nmax];
void read( void )
{
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(adj[i][j] == 0)
DP[i][j] = INF;
}
}
void solve()
{
for(int k = 1; k <= N; ++k) /// nodul cu care optimizez
for(int i = 1; i <= N; ++i)
if( i != k ) for(int j = 1; j <= N; ++j)
if(i != j && k != j)
if(DP[i][j] > DP[i][k] + DP[k][j])
DP[i][j] = DP[i][k] + DP[k][j];
for(int i = 1; i <= N; ++i){
for(int j = 1; j <= N; ++j)
printf("%d ",DP[i][j] == INF? 0 : DP[i][j]);
printf("\n");
}
}
int main()
{
freopen("royfloyd.in","r",stdin);
freopen("royfloyd.out","w",stdout);
read();
solve();
return 0;
}