• Jueves 14 de Noviembre de 2024, 16:44

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - nanoziros

Páginas: [1]
1
C/C++ / DIJKSTRA c++D:
« en: Miércoles 18 de Mayo de 2011, 04:06 »
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.

Páginas: [1]