En théorie des graphes, un code Prüfer est une séquence unique d'entiers qui dénote un arbre spécifique.
Vous pouvez trouver le code Prüfer d'un arbre avec l'algorithme suivant tiré de Wikipedia:
Considérons un arbre étiqueté T avec des sommets
{1, 2, ..., n}
. À l'étape i , retirez la feuille avec la plus petite étiquette et définissez le i ème élément de la séquence Prüfer comme étant l'étiquette du voisin de cette feuille.
(Notez que puisque c'est une feuille, elle n'aura qu'un seul voisin).
Vous devez arrêter l'itération lorsqu'il ne reste que deux sommets dans le graphique.
Tâche
Étant donné une arborescence étiquetée en sortie, son code Prüfer. Vous pouvez prendre connaissance de toute manière raisonnable. Comme une matrice d'adjacence ou la représentation graphique de votre langage intégré. ( Vous ne pouvez pas prendre la saisie comme un code Prüfer ).
Il s'agit de code-golf , vous devez donc viser à minimiser les octets dans votre source.
Cas de test
Voici quelques entrées en ASCII avec leurs sorties ci-dessous. Vous n'avez pas besoin de prendre en charge l'entrée ASCII comme ceci.
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]]
dans le premier cas? (c'est-à-dire chaque branche)