Index: relax.hpp =================================================================== --- relax.hpp (revision 76078) +++ relax.hpp (working copy) @@ -52,19 +52,23 @@ D d_u = get(d, u), d_v = get(d, v); W w_e = get(w, e); - // The redundant gets in the return statements are to ensure that extra + // The redundant nested if statements are to ensure that extra // floating-point precision in x87 registers does not lead to relax() // returning true when the distance did not actually change. if ( compare(combine(d_u, w_e), d_v) ) { put(d, v, combine(d_u, w_e)); - put(p, v, u); - return compare(get(d, v), d_v); + if(compare(get(d, v), d_v) { + put(p, v, u); + return true; + } } else if (is_undirected && compare(combine(d_v, w_e), d_u)) { put(d, u, combine(d_v, w_e)); - put(p, u, v); - return compare(get(d, u), d_u); - } else - return false; + if(compare(get(d, u), d_u) ){ + put(p, u, v); + return true; + } + } + return false; } template