Dalam grafik-teori yang kode Prüfer adalah urutan yang unik dari bilangan bulat yang menunjukkan pohon tertentu.
Anda dapat menemukan kode Prüfer dari pohon dengan algoritma berikut yang diambil dari Wikipedia:
Pertimbangkan pohon berlabel T dengan simpul
{1, 2, ..., n}. Pada langkah saya , menghapus daun dengan label terkecil dan mengatur saya th unsur urutan Prüfer menjadi label dari tetangga daun ini.
(Perhatikan bahwa karena daun itu hanya akan memiliki satu tetangga).
Anda harus menghentikan iterasi ketika hanya dua simpul yang tersisa di grafik.
Tugas
Diberikan pohon berlabel sebagai input keluaran kode Prüfer-nya. Anda dapat mengambil input dengan cara yang masuk akal. Seperti matriks kedekatan atau bahasa Anda yang dibangun dalam representasi grafik. ( Anda tidak boleh mengambil input sebagai kode Prüfer ).
Ini adalah kode-golf sehingga Anda harus berusaha meminimalkan byte di sumber Anda.
Uji kasus
Berikut adalah beberapa input dalam ASCII dengan outputnya di bawah ini. Anda tidak perlu mendukung input ASCII seperti ini.
3
|
1---2---4---6
|
5
{2,2,2,4}
1---4---3
|
5---2---6---7
|
8
{4,4,2,6,2,5}
5---1---4 6
| |
2---7---3
{1,1,2,7,3}
[[2,1],[2,3],[2,5],[2,4,6]]untuk kasus pertama? (Yaitu masing-masing cabang)