Nella teoria dei grafi un codice Prüfer è una sequenza univoca di numeri interi che indica un albero specifico.
Puoi trovare il codice Prüfer di un albero con il seguente algoritmo tratto da Wikipedia:
Considera un albero etichettato T con vertici
{1, 2, ..., n}
. Al passaggio i , rimuovere la foglia con l'etichetta più piccola e impostare l' i elemento della sequenza Prüfer in modo che sia l'etichetta del vicino di questa foglia.
(Si noti che poiché è una foglia avrà solo un vicino).
Dovresti interrompere l'iterazione quando rimangono solo due vertici nel grafico.
Compito
Dato un albero etichettato come input output il suo codice Prüfer. È possibile accettare input in qualsiasi modo ragionevole. Come una matrice di adiacenza o le tue lingue incorporate nella rappresentazione grafica. ( Non è possibile accettare input come codice Prüfer ).
Questo è code-golf, quindi dovresti mirare a minimizzare i byte nella tua sorgente.
Casi test
Ecco alcuni ingressi in ASCII con le loro uscite in basso. Non è necessario supportare l'input ASCII in questo modo.
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]]
al primo caso? (ovvero ogni ramo)