90 bool sparesAsLeaves)
const {
91 if (elemsInSubtree.count(this->id()) > 0) {
94 if (std::find(parentsOfSubRoot.begin(), parentsOfSubRoot.end(),
mId) != parentsOfSubRoot.end()) {
96 elemsInSubtree.clear();
99 elemsInSubtree.insert(
mId);
100 for (
auto const& parent :
mParents) {
101 if (blockParents && std::find(parentsOfSubRoot.begin(), parentsOfSubRoot.end(), parent->id()) != parentsOfSubRoot.end()) {
104 parent->extendSubDft(elemsInSubtree, parentsOfSubRoot, blockParents, sparesAsLeaves);
105 if (elemsInSubtree.empty()) {
110 dep->extendSubDft(elemsInSubtree, parentsOfSubRoot, blockParents, sparesAsLeaves);
111 if (elemsInSubtree.empty()) {
117 restr->extendSubDft(elemsInSubtree, parentsOfSubRoot, blockParents, sparesAsLeaves);
118 if (elemsInSubtree.empty()) {
virtual void extendSubDft(std::set< size_t > &elemsInSubtree, std::vector< size_t > const &parentsOfSubRoot, bool blockParents, bool sparesAsLeaves) const
Helper to the independent subtree computation.
virtual std::vector< size_t > independentSubDft(bool blockParents, bool sparesAsLeaves=false) const
Computes independent subtrees starting with this element (this), that is, all elements (x) which are ...