assign complete edge data if duplicate shortcut edge has lower weight
This commit is contained in:
parent
117ebe1c32
commit
7b14de13ec
@ -385,10 +385,14 @@ public:
|
|||||||
_DynamicGraph::EdgeIterator currentEdgeID = _graph->FindEdge(edge.source, edge.target);
|
_DynamicGraph::EdgeIterator currentEdgeID = _graph->FindEdge(edge.source, edge.target);
|
||||||
if(currentEdgeID < _graph->EndEdges(edge.source) ) {
|
if(currentEdgeID < _graph->EndEdges(edge.source) ) {
|
||||||
_DynamicGraph::EdgeData & currentEdgeData = _graph->GetEdgeData(currentEdgeID);
|
_DynamicGraph::EdgeData & currentEdgeData = _graph->GetEdgeData(currentEdgeID);
|
||||||
if( currentEdgeData.shortcut
|
if( currentEdgeData.shortcut &&
|
||||||
&& edge.data.forward == currentEdgeData.forward
|
edge.data.forward == currentEdgeData.forward &&
|
||||||
&& edge.data.backward == currentEdgeData.backward ) {
|
edge.data.backward == currentEdgeData.backward &&
|
||||||
currentEdgeData.distance = std::min(currentEdgeData.distance, edge.data.distance);
|
edge.data.distance < currentEdgeData.distance
|
||||||
|
) {
|
||||||
|
// found a duplicate edge with smaller weight, update it.
|
||||||
|
currentEdgeData = edge.data;
|
||||||
|
// currentEdgeData.distance = std::min(currentEdgeData.distance, edge.data.distance);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user