H1.jpg (1294 bytes)H2.jpg (7449 bytes) Logo_ani.gif (8982 bytes)
mainnav.gif (3793 bytes)S3.gif (747 bytes) S4.gif (801 bytes)

bannerAd.gif (3729 bytes)

Mon, 20 May 2002, 15:47:34



Soal-soal lainnya: [Multipal [Kartu ] [Bebek ] [Lacak ] [Paste ]

Labirin

LABIRIN

 

Harry Potter sedang terjebak dalam suatu labirin (labirynth) bawah tanah yang berisi bom waktu. Dalam labirin terdapat sejumlah ruangan dengan koridor-koridor yang menghubungkannya. Setiap koridor hanya menghubungkan tepat dua ruangan yang berbeda dan setiap pasang ruangan oleh satu koridor atau tidak sama sekali. Ruang-ruang itu bisa berada dalam salah satu dari dua status: terkunci atau tak terkunci. Seseorang tidak bisa masuk ke dalam ruang yang tekunci, tapi ia bisa keluar dari ruangan yang terkunci itu. Sementara seseorang bisa keluar masuk ruang tak terkunci.

Di beberapa ruang terdapat tombol yang apabila ditekan akan mengubah status sejumlah ruang. Misalnya, ruang yang terkunci menjadi tidak terkunci dan sebaliknya ruang yang tak terkunci menjadi terkunci. Tentu saja jika Harry Potter berada di dalam ruangan yang memiliki tombol, ia tidak harus menekannya. Ia baru menekan manakala ia memerlukannya.

Salah satu ruang terdapat tangga untuk naik ke atas. Tuliskan suatu program dengan nama LABIRIN.PAS yang dapat membantu Harry Potter yang berada dalam salah satu ruang menemukan ruang yang berisi tangga naik ke atas itu termasuk tombol-tombol mana yang harus ditekan. Karena dikejar waktu program harus menemukan jumlah koridor yang harus dilalui Harry Potter, yang mungkin disertai dengan menekan tombol-tombol di ruangan tertentu ia sempat berada.

Masukan berisi deskripsi ruangan serta koridor-koridor dalam labirin tersebut, ruangan saat awal Harry Potter berada, dan daftar sejumlah tombol serta masing-masing ruangan yang statusnya berubah jika tombol tersebut ditekan.

 

Format Masukan

 

Masukan adalah file teks bernama LABIRIN.IN dengan format sebagai berikut. Baris pertama dari file masukan berisi dua integer yaitu N, yang menyatakan jumlah total kamar (1 ≤ N ≤ 100), dan S, yang menyatakan jumlah tombol (jumlah kamar yang berisikan tombol) (1 ≤ S ≤ 8). Tombol-tombol terlekat pad kamar-kamar bernomor 1 sampai S.

N baris berikutnya berisi deskripsi setiap kamar. Nomor kamar i pada baris ke (i+1). Pada setiap baris tersebut jika dimulai dengan 0 menandakan bahwa pada mulanya kamar tbs tak terkunci atau jika dimulai dengan 1 menandakan pada mulanya kamar ybs terkunci. Setelah spasi terdapat bilangan integer K, yang menyatakan jumlah kamar yang berhubungan dengan kamar ybs melalui koridor-koridor. Masih dalam baris yang sama, setelah satu spasi setelah terdapat K bilangan yang menyatakan nomor-nomor kamar tsb dengan penulisan yang dipisahkan spasi.

Dalam S baris berikutnya terdapat tombol-tombol, dari kamar pertama hingga kamar ke S.

Setiap dari baris-baris tsb dimulai dengan bilangan integer L, yang menyatakan jumlah kamar yang akan berubah jika tombol ditekan. Setelah spasi, berikutnya adalah L integer yang masing-masing menyatakan nomor-nomor kamar ybs yang masng-masing terpisahkan satu spasi.

Baris terakhir berisi dua bilangan A dan B; A adalah nomor kamar Harry Potter saat ini berada dan B nomor kamar yang berisi tangga naik ke atas.

 

Format Keluaran

 

Keluaran adalah file LABIRIN.OUT yang hanya berisi satu bilangan integer yang menyatakan jumlah minimal koridor yang harus dilalui untuk mencapai ruangan bertangga.

Note: Setiap data test dijamin selalu memiliki solusi, artinya dari ruang A selalu ada jalan untuk mencapai ruang B.

 

Contoh

 

LABIRIN.IN

4 1

0 1 3

1 2 3 4

0 2 1 2

0 1 2

1 2

3 4

 

LABIRIN.OUT

4

 

 

LABIRIN.IN

5 2

0 2 2 5

1 2 1 3

0 2 2 4

1 2 3 5

0 2 1 4

2 2 4

2 3 4

5 3

 

LABIRIN.OUT

3

 

 

LABIRIN.IN

6 2

0 2 6 5

1 2 4 6

0 1 4

1 3 2 5 3

0 3 1 4 6

0 3 1 5 2

3 2 5 3

1 4

6 3

 

LABIRIN.OUT

8