diff --git a/Dijkstra.cpp b/Dijkstra.cpp index fcbad8b..7469cf4 100644 --- a/Dijkstra.cpp +++ b/Dijkstra.cpp @@ -67,7 +67,7 @@ Dijkstra::SetGraph( DBLMATRIX AdjMatrix, int nDestInd) { // per sicurezza assegno agli elementi sulla diagonale la massima distanza for ( int i = 0 ; i < nRows ; ++ i) - m_AdjMatrix[i][i] = MAXDIST ; + m_AdjMatrix[i][i] = WEIGHT_NO_ADJ ; // il grafo è valido m_bValid = true ; @@ -100,7 +100,7 @@ Dijkstra::GetPath( INTVECTOR& vNodePath) for ( int i = 0 ; i < DIM ; ++ i) { sNode_toCheck.insert( i) ; vNodePath[i] = -1 ; - vDists[i] = MAXDIST ; + vDists[i] = WEIGHT_NO_ADJ ; } // il nodo sorgente ( in posizione zero) ha distanza nulla vDists[0] = 0. ; @@ -110,7 +110,7 @@ Dijkstra::GetPath( INTVECTOR& vNodePath) // cerco il nodo ( tra quelli non ancora visitati) a cui è associata la distanza minima // ( alla prima iterazione il nodo è lo 0) int nMinInd = -1 ; - double dDistRef = MAXDIST - 1 ; + double dDistRef = WEIGHT_NO_ADJ - 1 ; for ( int i = 0 ; i < DIM ; ++ i) { // cerco un nodo i disponibile set::iterator iter = sNode_toCheck.find( i) ; @@ -122,8 +122,8 @@ Dijkstra::GetPath( INTVECTOR& vNodePath) nMinInd = i ; } } - // se nodo non trovato o coincidente alla sorgente ( se presente), allora il percorso è terminato - if ( nMinInd == -1) + // se nodo non trovato o coincidente alla destinazione ( se presente), allora il percorso è terminato + if ( nMinInd == -1 || nMinInd == m_nDest) break ; // escludo il nodo i-esimo trovato diff --git a/Dijkstra.h b/Dijkstra.h index 76231e9..c1c7776 100644 --- a/Dijkstra.h +++ b/Dijkstra.h @@ -36,5 +36,3 @@ class Dijkstra : public IDijkstra bool m_bValid ; } ; -const double DIST_NO_ADJ = 1073741823U ; -