Na teoria dos grafos, um código de Prüfer é uma sequência única de números inteiros que denota uma árvore específica.
Você pode encontrar o código Prüfer de uma árvore com o seguinte algoritmo retirado da Wikipedia:
Considere uma árvore rotulada T com vértices
{1, 2, ..., n}
. Na etapa i , remova a folha com a menor etiqueta e defina o i- ésimo elemento da sequência Prüfer como a etiqueta do vizinho dessa folha.
(Observe que, como é uma folha, ela terá apenas um vizinho).
Você deve parar a iteração quando apenas dois vértices permanecerem no gráfico.
Tarefa
Dada uma árvore rotulada como entrada, imprima seu código Prüfer. Você pode receber sugestões de qualquer maneira razoável. Como uma matriz de adjacência ou a representação gráfica integrada em seus idiomas. ( Você não pode receber entrada como um código Prüfer ).
Isso é código-golfe, então você deve tentar minimizar os bytes em sua fonte.
Casos de teste
Aqui estão algumas entradas em ASCII com suas saídas abaixo. Você não precisa suportar entrada ASCII como esta.
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]]
ao primeiro caso? (ou seja, cada ramo)