%%time js = DisjointSet(10) links = [[1,2], [2,3], [3,5], [5, 6]] for pair in links: js.union(pair[0], pair[1]) print(js.tree_num()) print(js) # 6 # items: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # index: [0, 2, 5, 2, 4, 5, 5, 7, 8, 9] # depth: [0, 0, 1, 0, 0, 1, 0, 0, 0, 0] # CPU times: user 4 ms, sys: 0 ns, total: 4 ms # Wall time: 143 µs