Latihan 1 dari materi Union-Find (Disjoint Set) di Struktur Data — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi class UnionFind untuk n orang bernomor 0 sampai n - 1:
constructor(n): bikin array this.parent di mana tiap orang jadi ketua dirinya sendiri, [0, 1, 2, ..., n - 1].
find(x): naik lewat parent sampai ketemu ketuanya, lalu kembalikan ketua itu.
union(x, y): kalau ketua x dan ketua y beda, pasang salah satu ketua di bawah ketua yang lain.
countComponents(): kembalikan jumlah kelompok, yaitu jumlah orang yang parent-nya dirinya sendiri.
Path compression boleh dipakai, tapi gak harus.
Kode di bawah starter mencetak lima baris, urut: 5, 3, true, false, 2.
Class-nya juga dites dengan urutan union lain, jadi hitung dari array parent, jangan menulis angkanya langsung.