10 #ifndef CPROVER_UTIL_UNION_FIND_H 11 #define CPROVER_UTIL_UNION_FIND_H 41 mutable std::vector<nodet>
nodes;
84 return nodes[a].parent==a;
131 template <
typename T>
162 subt_number_typet na=subt_number_typet(), nb=subt_number_typet();
166 if(have_na && have_nb)
168 else if(!have_na && !have_nb)
233 assert(
uuf.
size()==this->size());
259 #endif // CPROVER_UTIL_UNION_FIND_H
size_type find_number(typename numbering< T >::const_iterator it) const
bool is_root(typename numbering< T >::const_iterator it) const
const T & find(const T &a)
void isolate(typename numbering< T >::const_iterator it)
size_type count_roots() const
void resize(size_type size)
const T & find(typename numbering< T >::const_iterator it) const
void make_union(size_type a, size_type b)
bool is_root(size_type a) const
bool same_set(const T &a, const T &b) const
size_type find(size_type a) const
bool get_number(const T &a, number_type &n) const
size_type number(const T &a)
bool make_union(typename numbering< T >::const_iterator it_a, typename numbering< T >::const_iterator it_b)
size_type count(size_type a) const
void re_root(size_type old, size_type new_root)
void isolate(size_type a)
void check_index(size_type a)
void swap(unsigned_union_find &other)
size_type find_number(size_type a) const
std::vector< nodet > nodes
numbering< T >::size_type size_type
bool is_root(const T &a) const
size_type find_number(const T &a)
bool make_union(const T &a, const T &b)
number_type number(const T &a)
void intersection(const unsigned_union_find &other)
bool same_set(size_type a, size_type b) const
size_type get_other(size_type a)
bool same_set(typename numbering< T >::const_iterator it_a, typename numbering< T >::const_iterator it_b) const
bool is_root_number(size_type a) const