src/cplib/collections/group_unionfind

  Source   Edit

Types

UnionFind = ref object
  count*: int
  par_or_siz: seq[int]
  next: seq[int]
  edge_cnt: seq[int]
  Source   Edit

Procs

proc edge_count(self: UnionFind; x: int): int {....raises: [], tags: [].}
xの属するグループの辺の数を返します。   Source   Edit
proc get_group(self: UnionFind; x: int): seq[int] {....raises: [], tags: [].}
  Source   Edit
proc groups(self: UnionFind): seq[seq[int]] {....raises: [], tags: [].}
  Source   Edit
proc has_cycle(self: UnionFind; x: int): bool {....raises: [], tags: [].}
xの属する連結成分にサイクルがあるかどうかを返します。   Source   Edit
proc initUnionFind(N: int): UnionFind {....raises: [], tags: [].}
  Source   Edit
proc is_namori(self: UnionFind; x: int): bool {....raises: [], tags: [].}
xの属する連結成分がなもりグラフかどうかを返します。   Source   Edit
proc is_tree(self: UnionFind; x: int): bool {....raises: [], tags: [].}
xの属する連結成分が木かどうかを返します。   Source   Edit
proc issame(self: UnionFind; x: int; y: int): bool {....raises: [], tags: [].}
  Source   Edit
proc root(self: UnionFind; x: int): int {....raises: [], tags: [].}
  Source   Edit
proc roots(self: UnionFind): seq[int] {....raises: [], tags: [].}
O(N)かけて、rootになっている頂点を列挙します。 注意:O(root数)でないことに注意してください。   Source   Edit
proc siz(self: UnionFind; x: int): int {....raises: [], tags: [].}
  Source   Edit
proc unite(self: UnionFind; x: int; y: int) {....raises: [], tags: [].}
  Source   Edit