Programación General > C/C++

 Problema Con Dijkstra

(1/1)

extremoo:
hola a todos , estoy decifrando un pseudocodigo el algoritmo de Dijkstra, pero lo veo y lo veo y se me complica bastante parte de la sintaxis e arreglado parte del codigo para seguir con la estructura, mas abajo publico el codigo semiresuelto por ejemplo la estructura de datos a pasar es la siguiente:
______________
4
5
0 1 0.2
0 2 0.4
1 2 0.1
1 3 0.5
2 3 0.1
0 3
______________
el programa debe calcular cual es el camino mas corto mediante las probabilidades de encontrar un taco.

4 representa la cantidad de nodos n
5 representa la cantidad de caminos m
0 1 0.2 representan que de 0 a 1 la probabilidad (p) de taco es 0.2 asi sucesivamente con las cantidad <M
hasta la ultima linea en este caso 0 3 que indica desde donde parte hasta donde llega en este caso parte en 0 y termina en 3.

EL CODIGO SEMI TRADUCIDO A C++ HASTA EL MOMENTO ES

--- Código: C++ --- #include <iostream>using namespace std; int main (){  int n, m;  int x, y;  float  p;  int desde, hasta;   cin >> n;  cin >> m;     for (int i = 0; i < m ; i++)    {      cin >> x;      cin >> y;      cin >> p;    }    cin >> desde;    cin >> hasta;//void Dijkstra()//{  int N;  bool enArbol  [N];  int distancia [N];  int padre     [N];   for( int i=0; i < N ; i++)  {    enArbol   [n] = false;    distancia [n] = infinito;    padre     [n] = -1;  }  distancia [i] = 0;  int v = i;  while (enArbol[v]=false)  {    enArbol[v] = true;    //for( cada vecino u de v && !enArbol[u])    {      int peso = M [v][u];      if(distancia[u] > distancia[v] + peso)      {        distancia[u] = distancia [v] + peso;        padre [u] = v;      }    }    v=0    int dist = infinito;    //for(cada vertice u en V)    {      if(enArbol [u]=false) && (dis > distancia[u])      {        dist = distancia[u];        v=u      }     }  }//}  cout << "n:"<< n <<"  m:"   << m << endl;return 0;}  

CUALQUIER AYUDA CON ESTE ENREDO SERÁ BIENVENIDA SALUDOS

Navegación

[0] Índice de Mensajes

Ir a la versión completa