In [1]:
from union_find import UnionFind, UnionFindLabel
In [2]:
uf = UnionFind(6)
print(uf.parents)
In [3]:
print(uf)
In [4]:
uf.union(0, 2)
print(uf.parents)
In [5]:
print(uf)
In [6]:
uf.union(1, 3)
print(uf.parents)
uf.union(4, 5)
print(uf.parents)
uf.union(1, 4)
print(uf.parents)
In [7]:
print(uf)
In [8]:
print(uf.parents)
In [9]:
print(uf.find(0))
In [10]:
print(uf.find(5))
In [11]:
print(uf.size(0))
In [12]:
print(uf.size(5))
In [13]:
print(uf.same(0, 2))
In [14]:
print(uf.same(0, 5))
In [15]:
print(uf.members(0))
In [16]:
print(uf.members(5))
In [17]:
print(uf.roots())
In [18]:
print(uf.group_count())
In [19]:
print(uf.all_group_members())
In [20]:
print(list(uf.all_group_members().values()))
In [21]:
l = ['A', 'B', 'C', 'D', 'E']
In [22]:
d = {x: i for i, x in enumerate(l)}
print(d)
In [23]:
d_inv = {i: x for i, x in enumerate(l)}
print(d_inv)
In [24]:
uf_s = UnionFind(len(l))
print(uf_s)
In [25]:
uf_s.union(d['A'], d['D'])
uf_s.union(d['D'], d['C'])
uf_s.union(d['E'], d['B'])
print(uf_s)
In [26]:
print(d_inv[uf_s.find(d['D'])])
In [27]:
print(uf_s.size(d['D']))
In [28]:
print(uf_s.same(d['A'], d['D']))
In [29]:
print([d_inv[i] for i in uf_s.members(d['D'])])
In [30]:
print([d_inv[i] for i in uf_s.roots()])
In [31]:
print(uf_s.group_count())
In [32]:
l = ['A', 'B', 'C', 'D', 'E']
In [33]:
ufl = UnionFindLabel(l)
print(ufl)
In [34]:
ufl.union('A', 'D')
ufl.union('D', 'C')
ufl.union('E', 'B')
print(ufl)
In [35]:
print(ufl.find_label('D'))
In [36]:
print(ufl.size('D'))
In [37]:
print(ufl.same('A', 'D'))
In [38]:
print(ufl.members('D'))
In [39]:
print(ufl.roots())
In [40]:
print(ufl.group_count())
In [41]:
print(ufl.all_group_members())
In [42]:
ufl_n = UnionFindLabel([1, 2, 3, 4, 5])
print(ufl_n)
In [43]:
ufl_n.union(1, 4)
ufl_n.union(4, 3)
ufl_n.union(5, 2)
print(ufl_n)
In [44]:
ufl_n2 = UnionFind(6)
print(ufl_n2)
In [45]:
ufl_n2.union(1, 4)
ufl_n2.union(4, 3)
ufl_n2.union(5, 2)
print(ufl_n2)
In [46]:
ufl_t = UnionFindLabel([(0, 0), (0, 1), (1, 0), (1,1)])
print(ufl_t)
In [47]:
ufl_t.union((0, 1), (1, 0))
ufl_t.union((0, 0), (1, 0))
print(ufl_t)
In [48]:
print(ufl_t.same((0, 1), (0, 0)))