Resulta que hice un codigo krukal , pero en los nodos 2 y 3 nose porque no me los reconoce aveces, alguien q me pudiera ayudar
int** camino_minimo(int** matriz,int n,int m){
int** new_matriz=NULL;
int i,j;
/*asignacion de memoria para la matriz prado*/
new_matriz = (int **) malloc (sizeof(int *) * n);//primero las filas
for (i =0; i < n; i++)
{ new_matriz[i] = (int *) malloc (sizeof(int) * m);} //luego las columnas
for(i=0;i<=n-1;i++)
{ for(j=0;j<=m-1;j++){
new_matriz[i][j]=9999;}
}
/////////// printf("asdf");
int *enumera_estados = NULL;
enumera_estados = (int *) malloc (sizeof(int) * n);
int cont_min=9999;
int cont_estad=0,pos_i=0,pos_j=0;
while(cont_estad<=n-1){
for(i=0;i<=n-1;i++){
for(j=i;j<=m-1;j++){
if(i!=j){
if(cont_min>matriz[i][j]){
cont_min=matriz[i][j];
pos_i=i;pos_j=j;
}
}
}
}
matriz[pos_i][pos_j]= 9999;
if(existe(enumera_estados,pos_i+65,n)&&existe(enum era_estados,pos_j+65,n)){
matriz[pos_i][pos_j]=9999;
// matriz[pos_j][pos_i]=9999;
}
else{
if(!existe(enumera_estados,pos_i+65,n)){
enumera_estados[cont_estad]=pos_i+65;
new_matriz[pos_i][pos_j]=cont_min;
new_matriz[pos_j][pos_i]=cont_min;
cont_estad++;
}
if(!existe(enumera_estados,pos_j+65,n)){
enumera_estados[cont_estad]=pos_j+65;
new_matriz[pos_i][pos_j]=cont_min;
new_matriz[pos_j][pos_i]=cont_min;
cont_estad++;
}
}
cont_min=9999;
}
return new_matriz;
}
int existe(int* lista,int estado,int n){
int i;
for(i=0;i<=n-1;i++){
if(estado==lista[i])
return 1;
}
return 0;
}
la entrada txt es la siguiente
4 <- indica el numero de nodos
0 2 3 8
2 0 4 9 lo demas es una matriz
3 4 0 1
8 9 1 0