Pagini recente » Cod sursa (job #3292790) | Cod sursa (job #2454314) | Cod sursa (job #1794225) | Cod sursa (job #3204994) | Cod sursa (job #143985)
Cod sursa(job #143985)
#include <stdio.h>
#define NMax 101
int n;
int a[NMax][NMax], b[NMax][NMax], prev[NMax][NMax];
void citire();
void rf();
void rez();
int main()
{
citire();
rf();
rez();
return 0;
}
void rez()
{
int i, j, max, aux;
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
printf( "%d ", a[i][j] );
printf( "\n" );
}
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
if ( i != j )
printf( "%d ", b[i][j] );
else
printf( "0 " );
printf( "\n" );
}
}
void rf()
{
int i, j, k;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
if ( a[i][j] )
b[i][j] = 1;
for (k=1; k<=n; k++)
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
if ( a[i][k] && a[k][j] && ( a[i][j] >= a[i][k]+a[k][j] || !a[i][j] ) && i != j )
{
if ( b[i][k] + b[k][i] > b[i][j] )
{
a[i][j] = a[i][k] + a[k][j];
prev[i][j] = k;
prev[j][i] = k;
b[i][j]++;
b[j][i]++;
}
}
}
void citire()
{
int i, j;
freopen( "rf.in", "rt", stdin );
freopen( "rf.out", "wt", stdout );
scanf( "%d", &n );
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
{
scanf( "%d", &a[i][j] );
prev[i][j] = -1;
}
}