Pagini recente » Borderou de evaluare (job #2657147) | Borderou de evaluare (job #408086) | Cod sursa (job #2504275) | Cod sursa (job #2508116) | Cod sursa (job #749213)
Cod sursa(job #749213)
#include<cstdio>
const int N = 1<<9;
int a[N][N] , n;
void read()
{
freopen ( "royfloyd.in" , "r" , stdin ) ;
freopen ( "royfloyd.out" , "w" , stdout ) ;
scanf ( "%d", &n );
for ( int i=1 ; i<=n ; ++i )
for( int j=1 ; j<=n ; ++j )
scanf( "%d" , &a[i][j] ) ;
}
void solve()
{
for ( int k = 1 ; k <= n ; ++k )
for ( int i = 1 ; i <= n ; ++i )
for ( int j = 1 ; j <= n ; ++j )
if (a[k][j]&&a[i][k]&&(a[i][j]>a[i][k]+a[k][j] || !a[i][j])&&i!=j) a[i][j] = a[i][k] + a[k][j];
}
void print()
{
for ( int i=1 ; i<=n ; ++i )
{
for ( int j=1 ; j<=n ; ++j )
{
printf("%d " , a[i][j]);
}
printf("\n");
}
}
int main()
{
read();
solve();
print();
return 0;
}