Files
kotlin-fork/compiler/testData/psi/examples/UnionFind.kt
T
2013-09-17 18:10:00 +04:00

34 lines
554 B
Kotlin
Vendored

class UnionFind {
private val data = IMutableList<Int>()
fun add() : Int {
val size = data.size
data.add(size)
size
}
private fun parent(x : Int) : Int {
val p = data[x];
if (p == x) {
return x;
}
val result = parent(p);
data[x] = result;
}
fun union(a : Int, b : Int) {
val pa = parent(a)
val pb = parent(b)
if (pa != pb) {
if (Random.nextInt().isOdd) {
data[pb] = pa
} else {
data[pa] = pb
}
}
}
}
val Int.isOdd : Boolean
get() = this % 2 != 0