では、グラフ理論Prüferコードは、特定のツリーを示し整数のユニークなシーケンスです。
ウィキペディアから取得した次のアルゴリズムを使用して、ツリーのPrüferコードを見つけることができます。
頂点を持つラベル付きツリーTを考え
{1, 2, ..., n}
ます。ステップiで、最小のラベルを持つ葉を削除し、Prüferシーケンスのi番目の要素をこの葉の近傍のラベルに設定します。
(これは葉なので、隣人は1つだけであることに注意してください)。
グラフに頂点が2つだけ残っている場合は、反復を停止する必要があります。
仕事
ラベル付きツリーを入力出力として指定すると、そのプリュファーコード。合理的な方法で入力することができます。隣接行列や言語の組み込みグラフ表現など。(入力をPrüferコードとして受け取ることはできません)。
これはコードゴルフなので、ソースのバイト数を最小限にすることを目指してください。
テストケース
以下は、ASCIIの入力とその出力です。このような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]]
最初のケースのように入力を受け取ることはできますか?(つまり、各ブランチ)