diff --git a/group-connectivity.h b/group-connectivity.h index eac1fd05ec784ed033c4bf22265cc690cb18ded3..f7950ac2acca45ef71704178aa66049834637bdc 100644 --- a/group-connectivity.h +++ b/group-connectivity.h @@ -77,7 +77,22 @@ struct Tester : public AbstractTester { } } -#if !USE_NEXT_FORB + +#if USE_NEXT_FORB + bool nextForb(Mapping& forb) { + for (size_t i = 0; i < edges; i++) { + T v = forb[i] + 1; + if (v >= Ring::size) { + forb.assign(i, 1); + } else { + forb.assign(i, v); + return true; + } + } + + return false; + } +#else // !USE_NEXT_FORB Mapping& unpack(size_t index, Mapping& ret) { size_t m = Ring::size - 1; @@ -90,6 +105,7 @@ struct Tester : public AbstractTester { } #endif + Mapping& cannonize(Mapping& map) { for (const auto &i : nonClassEdges) { #if OPTIMIZE_COMBINE @@ -123,21 +139,7 @@ struct Tester : public AbstractTester { #endif } -#if USE_NEXT_FORB - bool nextForb(Mapping& forb) { - for (size_t i = 0; i < edges; i++) { - T v = forb[i] + 1; - if (v >= Ring::size) { - forb.assign(i, 1); - } else { - forb.assign(i, v); - return true; - } - } - return false; - } -#endif virtual bool run() { # if SAVE_MEMORY