Skip to content

Instantly share code, notes, and snippets.

@rendon
Created May 22, 2016 16:53
Show Gist options
  • Save rendon/a13cf5d8557d371a9715b71dce9a4696 to your computer and use it in GitHub Desktop.
Save rendon/a13cf5d8557d371a9715b71dce9a4696 to your computer and use it in GitHub Desktop.
Basic implementation of a DisjointSet in Python
class DisjointSet:
def __init__(self, size):
self.id = [i for i in range(size)]
self.size = [1 for i in range(size)]
def root(self, u):
if self.id[u] == u:
return u
return self.root(self.id[u])
def connected(self, u, v):
return self.root(u) == self.root(v)
def connect(self, u, v):
u = self.root(u)
v = self.root(v)
if self.size[u] < self.size[v]:
self.id[u] = v
self.size[v] += self.size[u]
else:
self.id[v] = u
self.size[u] += self.size[v]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment