W teoria grafówkod Prüfer to unikatowy ciąg liczb całkowitych, które oznacza konkretną drzewo.
Możesz znaleźć kod Prüfera drzewa z następującym algorytmem zaczerpniętym z Wikipedii:
Rozważmy oznaczone drzewo T z wierzchołkami
{1, 2, ..., n}
. W kroku i usuń liść z najmniejszą etykietą i ustaw i- ty element sekwencji Prüfer, aby był etykietą sąsiada tego liścia.
(Pamiętaj, że ponieważ jest to liść, będzie miał tylko jednego sąsiada).
Powinieneś zatrzymać iterację, gdy na wykresie pozostaną tylko dwa wierzchołki.
Zadanie
Biorąc pod uwagę drzewo oznaczone jako dane wyjściowe, jego kod Prüfer. Możesz wziąć wkład w dowolny rozsądny sposób. Takich jak macierz przylegania lub wbudowana reprezentacja graficzna twoich języków. ( Nie możesz przyjmować danych wejściowych jako kodu Prüfer ).
To jest golf-golf więc powinieneś dążyć do zminimalizowania bajtów w twoim źródle.
Przypadki testowe
Oto niektóre dane wejściowe w ASCII, a ich wyniki poniżej. Nie musisz obsługiwać takiego wejścia ASCII.
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]]
w pierwszym przypadku? (tj. każdy oddział)