Negara Kesatuan Republik Wombatland, Part II (QUTS01) Masa-masa damai di negri Wombatland nampaknya hanya bertahan beberapa minggu saja. Setelah usaha pembangunan jalan-jalan tol pada tugas T0501, sekarang ada dua daerah yang kembali bermusuhan dan tidak mau daerahnya terhubung satu sama lain. Para petinggi wombat pun mengadakan pertemuan untuk membicarakan rencana peruntuhan beberapa jalan tol demi memisahkan kedua daerah tersebut. Sama seperti pembangunan jalan tol yang memakan biaya, meruntuhkannya pun menghabiskan dana yang cukup banyak. Selain itu, karena satu dan lain hal, tidak semua jalanan bisa diruntuhkan. Dari hasil pertemuan, para petinggi wombat telah mengeluarkan daftar jalan-jalan tol yang mungkin diruntuhkan secara berurutan dari yang paling murah hingga yang paling mahal. Sayangnya para wombat ini kurang cerdas, sehingga mereka tidak dapat menentukan apakah setelah suatu jalan tol diruntuhkan, kedua daerah yang bermusuhan menjadi terpisah atau tidak. Mereka juga punya kepercayaan bahwa jalan tol yang biaya peruntuhannya lebih murah selalu harus diruntuhkan duluan sebelum jalan tol yang lebih mahal. Sebagai contoh, perhatikan peta Wombatland berikut ini: Jalan-jalan tol yang mungkin diruntuhkan adalah yang ditandai dengan garis putus-putus, secara berurutan dari murah ke mahal adalah: 2-1 3-4 2-5 Misalnya daerah yang bermusuhan adalah daerah 0 & 4. Jika jalan 2-1 diruntuhkan, daerah 0 dan 4 masih tetap terhubung. Berikutnya jika jalan 3-4 diruntuhkan, barulah keduanya terpisah. Jadi untuk memisahkan daerah 0 & 4, perlu meruntuhkan 2 jalan tol. Anda diberikan data keterhubungan daerah-daerah di Wombatland pada awalnya, dua daerah yang bermusuhan, dan daftar jalan-jalan tol yang mungkin diruntuhkan secara berurutan dari yang termurah hingga yang termahal. Bantulah para wombat untuk menentukan berapa jalan tol yang perlu mereka runtuhkan supaya kedua daerah yang bermusuhan dapat terpisahkan, atau tampilkan tulisan “FAIL” jika keduanya tetap tidak dapat dipisahkan setelah meruntuhkan semua jalan tol pada daftar. Spesifikasi Input Input diawali dengan 5 buah bilangan bulat yang dipisahkan spasi: N menunjukkan banyaknya daerah (1 ≤ N ≤ 100). Setiap daerah dinomori dari 0 s.d. N-1. M menunjukkan banyaknya jalan tol mula-mula (0 ≤ M ≤ Nx(N-1)). Pada awalnya semua daerah di Wombatland terhubung (connected graph). A dan B, menunjukkan nomor daerah yang bermusuhan (0 ≤ A,B ≤ N-1). J menunjukkan banyaknya jalan tol yang mungkin diruntuhkan (0 ≤ J ≤ M). M baris berikutnya masing-masing berisi dua nomor daerah yang terhubung dengan satu jalan tol. Jalan tol selalu unik, artinya tidak ada dua daerah yang dihubungkan oleh lebih dari satu jalan tol. J baris berikutnya masing-masing berisi dua nomor daerah yang menunjukkan jalan tol yang mungkin diruntuhkan, terurut mulai dari yang paling murah hingga yang paling mahal. Spesifikasi Output Jika daerah A dan B mungkin dipisahkan, keluarkan jumlah jalan tol yang harus diruntuhkan. Jika tidak mungkin, keluarkan tulisan “FAIL” (tanpa kutip). Contoh Input #1 7 8 0 4 3 2 6 6 5 2 1 0 1 2 5 1 3 0 2 3 4 1 2 3 4 2 5 Contoh Output #1 2 Contoh Input #2 7 8 2 6 3 2 6 6 5 2 1 0 1 2 5 1 3 0 2 3 4 1 2 3 4 2 5 Contoh Output #2 FAIL Cycle Finding (QUTS02) Salah satu cara membangkitkan bilangan acak adalah dengan menggunakan pseudo-random generator. Diberikan fungsi f(x) dan sebuah nilai awal x0 yang disebut seed. Angka acak ke-i dibangkitkan dengan cara menghitung . Salah satu fungsi f(x) sederhana untuk pembangkit bilangan acak adalah , di mana Z, I dan M adalah suatu konstanta bilangan bulat. Sifat bilangan acak yang dibangkitkan dengan cara ini adalah suatu saat pasti mengalami pengulangan nilai. Sebagai contoh, untuk Z=7, I=5, dan M=12, rumus f(x) menjadi Misalkan x0 = 4, maka dapat dihitung nilai-nilai berikutnya adalah sebagai berikut: x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 4 9 8 1 0 5 4 9 8 1 0 5 Dapat dilihat bahwa x6=x0, maka x7 pasti sama dengan x2, demikian seterusnya. Nilai-nilai yang berulang adalah 4, 9, 8, 1, 0, 5, yaitu sebanyak 6 buah. Panjang deret ini disebut nilai . Selain itu, dikenal juga nilai , yaitu nomor elemen yang pertama kali berulang. Pada kasus ini x6=x0, maka =0. Contoh lain, misalnya Z=3, I=1, M=4, dan x0=7, maka nilai acak yang didapat adalah: x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 7 2 3 2 3 2 3 2 3 2 3 2 Pada kasus ini nilai yang berulang adalah 2,3, maka =2. Elemen yang pertama kali berulang adalah x3=x1, maka =1. Pseudo-random generator yang baik sebaiknya memiliki nilai dan yang besar, sehingga deret terlihat benarbenar acak. Pada soal ini, anda diberikan nilai Z, I, M, dan x 0, dan anda diminta untuk menghitung nilai dan . Note: Asumsikan deret pada soal ini memiliki nilai dan yang lebih kecil dari 1 juta. Soal ini dapat diselesaikan dengan menggunakan bantuan HashMap untuk menyimpan nilai-nilai apa saja yang pernah muncul, dan muncul di index ke berapa. Spesifikasi Input Input terdiri dari satu baris yang berisi 4 bilangan bulat Z, I, M, dan x 0, masing-masing bernilai antara 1 s.d. 1 juta. Spesifikasi Output Keluarkan pada satu baris dengan dipisahkan sebuah spasi, nilai dan . Contoh Input #1 7 5 12 4 Contoh Output #1 6 0 Contoh Input #2 3 1 4 7 Contoh Output #2 2 1