My first Magazine pemrograman-kompetitif-dasar | Page 113

10 Struktur Data NonLinear Struktur data tidak harus selalu menyimpan data pada sebuah rantai lurus. Terdapat pula struktur data yang menyimpan datanya pada struktur bercabang yang memungkinkan pelaksanaan suatu operasi secara efisien. Pada bagian ini, kita akan mempelajari struktur data disjoint set dan heap . 10.1 Disjoint Set Disjoint set merupakan struktur data yang efisien untuk mengelompokkan elemen-elemen secara bertahap. Disjoint set mendukung operasi join, yaitu menggabungkan kelompok dari sepasang elemen. Operasi lain yang didukung adalah check, yaitu memeriksa apakah sepasang elemen berada di kelompok yang sama. Sebagai motivasi, perhatikan contoh soal berikut: Contoh Soal 10.1: Membangun Jalan Antar Kandang Pak Dengklek memiliki N kandang bebek yang tersebar di peternakannya, dinomori dari 1 sampai dengan N. Setiap pagi, Pak Dengklek akan mengunjungi satu per satu kandang dan memberi makan bebek-bebeknya. Berhubung musim hujan telah tiba, tanah di peternakan Pak Dengklek menjadi becek dan perjalanan antar kandang ke kandang menjadi tidak nyaman. Untuk mengatasi masalah ini, Pak Dengklek berencana membangun jalan setapak yang menghubungkan kandang- kandangnya. Dalam merencanakan pembangunan jalan ini, Pak Dengklek meminta bantuan Anda untuk melaksanakan sejumlah operasi. Setiap operasi dapat berbentuk salah satu dari: • join(a, b), artinya Pak Dengklek akan membangun jalan yang menghubungkan kandang a dengan kandang b. Kini seseorang dapat berpindah dari kandang a ke kandang b (dan sebaliknya) dengan jalan ini. • check(a, b), artinya Pak Dengklek ingin mengetahui apakah kandang a dan kandang b terhubung? Pak Dengklek mendefinisikan dua kandang dikatakan terhubung apabila seseorang yang berada di kandang a dapat berpindah ke kandang b dengan menggunakan serangkaian jalan setapak (boleh nol). Bantulah Pak Dengklek dalam melaksanakan operasi-operasi tersebut! Kita dapat merepresentasikan kandang-kandang yang saling terhubung oleh serangkaian jalan dengan himpunan. Pada awalnya, setiap kandang terhubung hanya dengan dirinya sendiri, jadi setiap kandang membentuk himpunannya masing-masing. Ketika terdapat pembangunan jalan 103