Facebook
From minhhnh, 2 Weeks ago, written in Python.
Embed
Download Paste or View Raw
Hits: 89
  1. class DisjoinSet:
  2.     def __init__(self, n):
  3.         self.rank = [0] * n
  4.         self.parent = [i for i in range(n)]
  5.  
  6.     def union_sets(self, a, b):
  7.         a = self.find_set(a)
  8.         b = self.find_set(b)
  9.         if a != b:
  10.             if self.rank[a] < self.rank[b]:
  11.                 a, b = b, a
  12.             self.parent[b] = a
  13.             if self.rank[a] == self.rank[b]:
  14.                 self.rank[a] += 1
  15.  
  16.     def find_set(self, v):
  17.         if v == self.parent[v]:
  18.             return v
  19.         self.parent[v] = self.find_set(self.parent[v])
  20.         return self.parent[v]
  21.