Hola como estan.
Estaba tratando de hacer el algoritmo de floyd y lo tengo asi
pero me parece demasiado complejo.
Talvez alquien me pueda ayudar a no usar tantos for.
int a[][] =
{ {0, 8, 5},
{3, 0, inf},
{inf, 2, 0}};
main() {
int N=a.length;
int y, x, j;
for (y= 0; y< N; y++)
for (x= 0; x< N; x++)
if (a[x][y]>0)
for (j= 0; j< N; j++)
if (a[y][j]>0)
if ((a[x][j]== 0) || (a[x][y]+a[y][j]< a[x][j]))
a[x][j]= a[x][y]+a[y][j];
for (y= 0; y< N; y++)
{
for (x= 0; x< N; x++)
cout << (a[y][x]< 10 ? " "+a[y][x] : " "+a[y][x]);
cout << endl;
}
}
Saludos.
Si evitas ciertos intentos de "optimizar" el algoritmo puedes acortar el código:
for ( int i = 0; i < N; i++ )
{
for ( int j = 0; j < N; j++ )
{
for ( int k = 0; k < N; k++ )
{
int coste = path[j][i] + path[i][k];
if ( path[j][k] > coste )
path[j][k] = coste;
}
}
}
gracias me has dado algunas ideas. para mejorar el mio
Saludos.