Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/06/2010, 20:49
Avatar de extremoo
extremoo
 
Fecha de Ingreso: abril-2009
Mensajes: 54
Antigüedad: 15 años
Puntos: 0
Pregunta Dijkstra Errores

hola a todos estoy descifrando un pseudocodigo de dijkstra que me dieron en la universidad pero me encuentro con errores lo ideal es que al final imprima el camino mas corto el codigo es el siguiente, la forma de entrada la agrego mas abajo.

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main ()
  6. {
  7.   int **M;
  8.   int vertices, caminos;
  9.   int cam1, cam2;
  10.   float  prob;
  11.   int principio, final;
  12.  
  13.   cin >> vertices;
  14.   cin >> caminos;
  15.  
  16.     for (int i = 0; i < caminos ; i++)
  17.     {
  18.       cin >> cam1;
  19.       cin >> cam2;
  20.       cin >> prob;
  21.     }
  22.     cin >> principio;
  23.     cin >> final;
  24.  
  25.     bool *enArbol;
  26.     int *distancia;
  27.     int *padre;
  28.     //for(cada vecino u de vertice)
  29.     {
  30.       enArbol   [vertices] = false;
  31.       distancia [vertices] = infinito;
  32.       padre     [vertices] = -1;
  33.     }
  34.     distancia[i]=0;
  35.     vertices = i;
  36.       while(enArbol [vertices] = false )
  37.       {
  38.         enArbol[vertices]=true;
  39.         //for(cada vecino u de vertice && !enArbol[u])
  40.         {
  41.           int costo = M[vertices][u];
  42.           if(distancia[u] > distancia [vertices] + costo)
  43.           {
  44.             distancia [u] = distancia [vertices] + costo;
  45.             padre     [u] = vertices;
  46.           }
  47.         }
  48.         vertices = 0;
  49.         int dist= infinito;
  50.         //for(cada vertice u en V)
  51.         {
  52.           if(enArbol[u]=false  && dist > distancia [u])
  53.           {
  54.           dist = distancia [u];
  55.           vertices = distancia[u];
  56.           }
  57.         }
  58.       }
  59.  
  60. cout <<""<<  <<endl;
  61. return 0
  62. }

Entrada
---------------


4
5
0 1 0.2
0 2 0.4
1 2 0.1
1 3 0.5
2 3 0.1
0 3

4 es la cantidad de nodos N
5 cantidad de caminos M
0 1 0.2 (desde el 0 al 1 distancia 0.2) asi con el resto hasta que sea < M
y al final leo desde donde hasta donde quiero llegar parto en 0 hasta llegar a 3


ERRORES:

ubuntu@ubuntu:~/daa$ make t
g++ t.cpp -o t
t.cpp: In function ‘int main()’:
t.cpp:31: error: ‘infinito’ was not declared in this scope
t.cpp:34: error: name lookup of ‘i’ changed for ISO ‘for’ scoping
t.cpp:34: note: (if you use ‘-fpermissive’ G++ will accept your code)
t.cpp:41: error: ‘u’ was not declared in this scope
t.cpp:49: error: ‘infinito’ was not declared in this scope
t.cpp:52: error: ‘u’ was not declared in this scope
t.cpp:60: error: expected primary-expression before ‘<<’ token
t.cpp:62: error: expected ‘;’ before ‘}’ token
make: *** [t] Error 1

es lo mas reducido en errores que pude llegar a tener cualquier ayuda es bienvenida.