CF847A Union of Doubly Linked Lists

题目描述

双向链表是一种基本的数据结构。一个双向链表是一串元素序列。链表中每一个元素都链接着它前面和后面的元素。在这个问题中,这个链表是一个线性序列。除了第一个元素外,每个元素都有一个直接前导;除了最后一个元素外,每个元素都有一个直接后继。这个链表不形成一个环。 在这个问题中,你被给予了$n$个单元。这些单元能够形成一个或者多个双向链表。每个单元包含着一些链表元素的信息。这些单元的编号是从$1$至$n$的。 对于每个单元,有两个属性: $l_i$表示第$i$个单元的前导; $r_i$表示第$i$个单元的后继。 如果$l_i=0$,表示这个单元没有直接前导。如果$r_i=0$,表示这个单元没有直接后继。 | $i$ | $l_{i}$ | $r_{i}$ | | ---- | ------- | ------- | | 1 | 4 | 7 | | 2 | 5 | 0 | | 3 | 0 | 0 | | 4 | 6 | 1 | | 5 | 0 | 2 | | 6 | 0 | 4 | | 7 | 1 | 0 | 你的任务是,给定若干个由如上方式表示的双向链表,链接这些双向链表使得其仅构成一个双向链表。注意:你只能通过链接两个双向链表的首尾单元来链接这两个双向链表。

输入格式

The first line contains a single integer $ n $ ( $ 1

输出格式

Print $ n $ lines, the $ i $ -th line must contain two integers $ l_{i} $ and $ r_{i} $ — the cells of the previous and the next element of list for cell $ i $ after all lists from the input are united in a single list. If there are many solutions print any of them.