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
Ir a la versión completa