CSES 1134 - Prüfer Code
1.0s 512M一棵 \(n\) 個節點的樹的 Prüfer 編碼是一個由 \(n-2\) 個整數組成的序列,它可以唯一決定這棵樹的結構。
這個編碼是這樣建構的:只要樹上還剩下至少三個節點,就找出標號最小的葉子,把它唯一的鄰居的標號加進編碼,然後把這片葉子從樹上移除。
給定一棵樹的 Prüfer 編碼,你的任務是還原出原本那棵樹。
輸入格式
第一行有一個整數 \(n\):節點數量。節點編號為 \(1,2,\ldots,n\)。
第二行有 \(n-2\) 個整數:Prüfer 編碼。
輸出格式
輸出 \(n-1\) 行描述樹的邊。每行要有兩個整數 \(a\) 與 \(b\):節點 \(a\) 與 \(b\) 之間有一條邊。這些邊可以用任意順序輸出。
範例輸入 1
5
2 2 4
範例輸出 1
1 2
2 3
2 4
4 5
限制
- \(3 \le n \le 2 \cdot 10^5\)
- \(1 \le a,b \le n\)
題目來源
題目來自 CSES Problem Set(Antti Laaksonen),授權 CC BY-NC-SA 4.0;本頁為翻譯,以相同授權分享。
登入後即可撰寫程式並提交評測。
登入