Open-source multiplayer game server compatible with the RuneScape client https://www.openrs2.org/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
openrs2/util/src/main/java/dev/openrs2/util/collect/DisjointSet.kt

17 lines
550 B

package dev.openrs2.util.collect
/**
* A data structure containing a set of elements partitioned into a number of
* non-overlapping subsets. New elements belong to singleton subsets. The
* [union] function combines two subsets together into a single larger subset.
*/
interface DisjointSet<T> : Iterable<DisjointSet.Partition<T>> {
interface Partition<T> : Iterable<T>
val elements: Int
val partitions: Int
fun add(x: T): Partition<T>
operator fun get(x: T): Partition<T>?
fun union(x: Partition<T>, y: Partition<T>)
}