pengantar
Diberikan graf G tidak berarah, kita dapat membuat grafik L (G) (disebut grafik garis atau grafik konjugat) yang mewakili koneksi antara tepi dalam G. Ini dilakukan dengan membuat simpul baru di L (G) untuk setiap tepi di G dan menghubungkan simpul-simpul ini jika ujung-ujungnya mewakili memiliki simpul yang sama.
Berikut adalah contoh dari Wikipedia yang menunjukkan pembuatan grafik garis (berwarna hijau).
Sebagai contoh lain, ambil grafik G ini dengan simpul A, B, C, dan D.
A
|
|
B---C---D---E
Kami membuat simpul baru untuk setiap tepi di G. Dalam hal ini, tepi antara A dan C diwakili oleh simpul baru yang disebut AC.
AC
BC CD DE
Dan hubungkan simpul ketika tepi yang mereka wakili memiliki titik yang sama. Dalam hal ini, ujung-ujungnya dari A ke C dan dari B ke C memiliki titik sudut C yang sama, sehingga simpul AC dan BC terhubung.
AC
/ \
BC--CD--DE
Grafik baru ini adalah grafik garis G!
Lihat Wikipedia untuk informasi lebih lanjut.
Tantangan
Dengan diberikan daftar adjacency untuk grafik G, program Anda harus mencetak atau mengembalikan daftar adjacency untuk grafik garis L (G). Ini kode-golf, jadi jawabannya dengan byte paling sedikit menang!
Memasukkan
Daftar pasangan string yang mewakili tepi G. Setiap pasangan menggambarkan simpul yang terhubung dengan tepi itu.
- Setiap pasangan (X, Y) dijamin unik, artinya daftar tidak akan berisi (Y, X) atau yang kedua (X, Y).
Sebagai contoh:
[("1","2"),("1","3"),("1","4"),("2","5"),("3","4"),("4","5")]
[("D","E"),("C","D"),("B","C"),("A","C")]
Keluaran
Daftar pasangan string yang mewakili tepi L (G). Setiap pasangan menggambarkan simpul yang terhubung dengan tepi itu.
Setiap pasangan (X, Y) harus unik, artinya daftar tidak akan berisi (Y, X) atau yang kedua (X, Y).
Untuk setiap tepi (X, Y) dalam G, simpul yang dibuatnya dalam L (G) harus dinamai XY (nama-nama tersebut digabungkan bersama-sama dalam urutan yang sama seperti yang ditentukan dalam input).
Sebagai contoh:
[("12","13"),("12","14"),("12","25"),("13","14"),("13","34"),("14","34"),("14","45"),("25","45"),("34","45")]
[("DE","CD"),("CD","CB"),("CD","CA"),("BC","AB")]
Uji Kasus
[] -> []
[("0","1")] -> []
[("0","1"),("1","2")] -> [("01","12")]
[("a","b"),("b","c"),("c","a")] -> [("ab","bc"),("bc","ca"),("ca","ab")]
[("1","2"),("1","3"),("1","4"),("2","5"),("3","4"),("4","5")] -> [("12","13"),("12","14"),("12","25"),("13","14"),("13","34"),("14","34"),("14","45"),("25","45"),("34","45")]





[("1","23"),("23","4"),("12","3"),("3","4")], yang hasilnya mungkin seharusnya[("123","234"),("123","34")], yang tidak dapat ditafsirkan dengan benar. Saya pikir satu-satunya cara untuk memperbaikinya adalah dengan mengedit dalam jaminan bahwa input tidak akan pernah mengandung ambiguitas seperti itu, tetapi jika pertanyaan ini telah diposting di kotak pasir maka saya akan menyarankan menjadi kurang preskriptif tentang penamaan simpul dalam output.