Union-Find
| 投稿者 | urunea |
|---|---|
| 言語 | PyPy3 |
| 更新日時 (JST) | 2026-10-24 22:38:02 |
| サイズ | 687 Byte |
| 参照URL | |
日時はサーバーが記録したものです。更新すると更新日時が変わるので、不都合がある場合は新しく投稿してください。
class UnionFind:
def __init__(self, n):
self.par = list(range(n))
self.size = [1] * n
def find(self, x):
if self.par[x] != x:
self.par[x] = self.find(self.par[x])
return self.par[x]
def unite(self, x, y):
x = self.find(x)
y = self.find(y)
if x == y:
return False
if self.size[x] < self.size[y]:
x, y = y, x
self.par[y] = x
self.size[x] += self.size[y]
return True
def same(self, x, y):
return self.find(x) == self.find(y)
def get_size(self, x):
return self.size[self.find(x)]
#nはノードの数
#0-idx
uf = UnionFind(N)