Aşık Prens
Denizin içinde adalardan oluşan bir imparatorluk var. Bu imparatorluğun prensi Shatlyk, kaybolan prensesini bulmak için aramaya çıkar. Kendisine, prensesi bulamayacağı söylense de, inat eder ve bütün adaları gezerek prensesini aramaya karar verir.
Prensin adaları gezme yöntemi:
- Prens her adaya gittiğinde adanın numarasını kağıda yazar.
- Prens her adaya gittiğinde adada ateş yakar ve duman oluşturur. Böylece, komşu adalardan hangisine uğrayıp uğramadığına duman yardımıyla karar verir. (Komşu ada'da duman var ise, önceden o adaya gitmiştir, yok ise o adaya daha hiç gitmemiştir)
- Adayı gezdikten sonra, gezmediği komşu adalara gider. (Komşu adayı gezip gezmediğine duman yardımıyla karar verir)
- Herhangi bir adadayken, o adanın tüm komşularını gezdikten sonra geldiği adaya geri döner. Geri döndüğü adanın numarasını kağıda tekrar yazar.
- Bunu yaptıktan sonra (başladığı adaya geri döndükten sonra), elindeki kağıda bakarak, bütün adalara gidip gitmediğine karar verir. Gitmediği ada varsa, o ada gidilen adalardan uzakta yer almaktadır.(komşuluğu yoktur) Gitmediği adadan başlayarak yine aynı yöntemi kullanır.
Bu yöntemi kullanan prens, ne yazık ki prensesini bulamaz ve üzgün bir halde evine döner. Zeki Alaettin prensin kağıdını alır ve prensin kullandığı arama yönteminin algoritmasını çıkartır:
gez(int adaNumarası){
adaNumarasını kağıda yaz;
ada'da ateş yakarak, duman oluştur;
adanın gidilmemiş her ki komşusu için{
gez(ki);
adaNumarasını kağıda yaz;
}
}
adaları_gez(){
elindeki kağıda bakarak, gidilmemiş her bir adayı gez();
}
Sonra, Alaettin bu kağıttaki ada numaralarına bakarak, imparatorluktaki adaların arasındaki olabilecek bütün komşulukları bulmaya çalışır. Çok uğraşır ama bulamaz. Sizin, zeki Alaettin'e yardımcı olmanız gerekiyor. Prensin kağıda yazdığı ada numaralarına bakarak bütün adaların aralarında olabilecek bütün komşulukları bulmanız gerekiyor.
Varsayımlar:
- Adalar 1'den n'ye kadar numaralandırılmıştır.
- Ada'da oluşturulan dumanda eksilme ya da tükenme meydana gelmemektedir.
- Ada'daki duman tüm komşu adalardan görünür.
Girdi(prens.gir):
- Dosyanın ilk satırında n(1<=n<=300) ve k(1<=k<=2n-1) sayıları verilecektir.
n: imparatorluktaki ada sayısı
k: prensin kağıda yazdığı adaların sayısı.
- Sonraki k tane satırda prensin kağıda yazdığı k tane ada numaraları verilecektir.
Çıktı(prens.cik):
- Çıktı dosyasının ilk satırına m sayısı basılacaktır.
m: bütün adaların aralarında olabilecek bütün komşuluklar
- Sonraki m satırda, komşuluğu bulunan iki adanın numaraları arasında boşluk bırakılarak basılacaktır.
Örnek 1
prens.gir:
7 13
1
2
3
2
4
2
5
2
1
6
7
6
1
prens.cik:
10
1 2
1 3
1 4
1 5
1 6
1 7
2 3
2 4
2 5
6 7
Örnek 2
prens.gir:
6 10
1
2
3
2
4
2
1
5
6
5
prens.cik:
6
1 2
1 3
1 4
2 3
2 4
5 6