• Miércoles 20 de Noviembre de 2024, 10:27

Autor Tema:  DIJKSTRA c++D:  (Leído 3810 veces)

nanoziros

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
DIJKSTRA c++D:
« en: Miércoles 18 de Mayo de 2011, 04:06 »
0
Hola a todos, les escribo para ver si me pueden ayudar con un problema que tengo.

Me mandaron una asignacion de usar un dijkstra ( o CMP) para hallar el camino mas corto de un grafo que me dan por entrada de archivos, pero leyendo por internet no encontre ninguna implementacion de dijkstra que dev-c++ compilara! Si pueden ayudarme estaria muy agradecido D:

int main ()
{
  FILE* A = fopen("entrada.txt", "r");  //cambiar por entrada.in
  char *line = (char *) calloc(1000, sizeof(char));
  char *lineaux;
  int C=0,nodos=0,actividad=0,i=0,j=0;
  if (A==NULL)printf("Error abriendo el archivon");
  else{
      fscanf(A, "%[^n]", line);
      fgetc(A);
      C=atoi(line);//comprobar que pasa si C=0
      for(i=0;i<C;i++){
                       int z=0;
                        fscanf(A, "%[^n]", line);
                        fgetc(A);
                        lineaux=strtok(line," ,.-");
                        nodos=atoi(lineaux);
                        lineaux=strtok(NULL," ,.-");
                        actividad=atoi(lineaux);
                        int entrada[actividad-1][2];
                        int incidencia[nodos-1][nodos-1];
                        int peso[nodos-1][nodos-1];
                        for(j=0;j<nodos;j++){for(z=0;z<nodos;z++){incidencia[z][j]=0;peso[z][j]=0;}}//inicializo la matriz de incidencia en 0.
                        for(j=0;j<actividad;j++){
                                                 fscanf(A, "%[^n]", line);
                                                 fgetc(A);
                                                 lineaux=strtok(line," ,.-");
                                                 entrada[j][0]=atoi(lineaux);
                                                 lineaux=strtok(NULL," ,.-");
                                                 entrada[j][1]=atoi(lineaux);
                                                 lineaux=strtok(NULL," ,.-");
                                                 entrada[j][2]=atoi(lineaux);
                                                 incidencia[entrada[j][0]][entrada[j][1]]=1;
                                                 peso[entrada[j][0]][entrada[j][1]]=entrada[j][2]; //lleno la matriz de incidencia                                                                          
                        }                          
      }
  }
 system("Pause");
  return 0;
}

La matriz incidencia[][] esta conformada de puros 0s y 1s señalando los nodos que tienen enlaces (Es un grafo dirigido), mientras  que la de peso posee la duracion del recorrido de un nodo a otro.

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: DIJKSTRA c++D:
« Respuesta #1 en: Domingo 19 de Junio de 2011, 21:53 »
0
Amigo, solo se resuelven dudas concretas. no se hacen tareas LOL
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

sergio__

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: DIJKSTRA c++D:
« Respuesta #2 en: Martes 21 de Junio de 2011, 15:16 »
0
te conviene implementarlo vos, no buscar una implementacion en internet, puesto que no te serviría de nada a vos, leete el algoritmo de algún libro de matemática discreta y aprendelo a usar, no es complicado de implementar el dijkstra