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
#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