Os dejo el algoritmo de Floyd, para el que lo necesite. Esta realizado de forma dinámica en C. Espero que os sea útil!!!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define max 50
int floyd(int matriz[max][max],int n);
int main(){
int n,i,j;
int matriz[max][max];
printf("\n PROBLEMA DE FLOYD");
printf("\n\n Introduce el valor de nodos: ");
scanf("%d",&n);
for (i=0;i<n;i++){
for (j=0;j<n;j++){
printf(" Introduce el peso entre los nodos [%d][%d]: ",i,j);
scanf("%d",&matriz[i][j]);
}
}
floyd(matriz,n);
printf("\n");
printf("\n");
system("pause");
return 1;
}
int floyd(int matriz[max][max],int n){
int i,j,k;
int mat[n][n],resul[n][n];
for (i=0;i<n;i++){
for (j=0;j<n;j++){
mat[i][j]=matriz[i][j];
}
}
for (i=0;i<=n;i++){
for (j=0;j<n;j++){
for (k=0;k<n;k++){
if (mat[i][j]<(mat[i][k]+mat[k][j]))
mat[i][j]=mat[i][j];
else
mat[i][j]=(mat[i][k]+mat[k][j]);
}
}
}
printf("La matriz resultante (minima) es:\n");
for (i=0;i<n;i++){
for (j=0;j<n;j++){
printf("%d ",mat[i][j]);
}
printf("\n");
}
}
No hay comentarios:
Publicar un comentario