|| ||Code Submission Evaluation System
CSES Problem Set
Task | Statistics
CSES - Prüfer Code
|Time limit:||1.00 s
||Memory limit:||512 MB|
A Prüfer code
of a tree of $n$ nodes is a sequence of $n-2$ integers that uniquely specifies the structure of the tree.
The code is constructed as follows: As long as there are at least three nodes, find a leaf whose label is minimum, add the label of its only neighbor to the code, and remove the node from the tree.
Given a Prüfer code of a tree, your task is to construct the original tree.
The first input line contains an integer $n$: the number of nodes. The nodes are numbered $1,2,\ldots,n$.
The second line contains $n-2$ integers: the Prüfer code.
Print $n-1$ lines that describe the edges of the tree. Each line has to contain two integers $a$ and $b$: there is an edge between nodes $a$ and $b$. You can print the edges in any order.
- $3 \le n \le 5 \cdot 10^5$
- $1 \le a,b \le n$
2 2 4