C/Visual C - C kruskal duda

 
Vista:

C kruskal duda

Publicado por Ignacio (1 intervención) el 11/05/2010 01:55:53
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(enumera_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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder