编程题
### 问题描述 在一张由 $N$ 个节点构成的网络中,每个节点(编号 $1$ 到 $N$)都受到了病毒的感染。每个节点 $i$ ($1 \leq i \leq N$)都有一个直连的节点 $P_i$。利用一个病毒的漏洞,一个受感染的节点 $i$ 可以清理与其直连的节点 $P_i$。注意,一旦节点 $P_i$ 被清理,它就不再包含病毒,因此不能用来清理其他节点。需要输出一个操作序列,使得能够清理尽可能多的节点。 ### 输入格式 第一行包含一个整数 $N$。 第二行包含 $N$ 个整数,表示直连节点的编号 $P$。 ### 输出格式 输出操作序列,每个操作表示为 `A B`,意味着节点 $A$ 清理节点 $B$。 在进行操作时,节点 $A$ 和节点 $B$ 都必须是受感染的。 每个操作单独输出一行。 ### 样例输入 ``` 3 2 1 2 ``` ### 样例输出 ``` 2 1 3 2 ``` ### 评测数据规模 - $2 \leq N \leq 10^5$ - $1 \leq A, B \leq N$ - $1 \leq P_i \leq N$ - $P_i \neq i$
查看答案
赣ICP备20007335号-2