Pagini recente » Rating Mihaitoaia Dan-Petrut (petru1999) | Cod sursa (job #2747650) | Istoria paginii runda/concurs_11_12_02_27 | Cod sursa (job #1072757) | Cod sursa (job #1218702)
#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]);
if(i == j)
DP[i][j] = INF;
else
DP[i][j] = adj[i][j];
}
}
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;
}