______________
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
5 representa la cantidad de caminos
0 1 0.2 representan que de 0 a 1 la probabilidad de taco es 0.2
asi sucesivamente con las cantidad de caminos
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.
** al final debería imprimir en pantalla el camino mas corto asi 0 1 2 3 **
Encontre un pseudocodigo y e estado tratando de modificarlo pero aun no entiendo varias cosas de la sintaxis alguien me puede ayudar el codigo SEMI modificado es el siguiente :
Código C++:
Ver original
#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; }
ojala me puedan ayudar me complica el tema de los grafos saludos