CF611H New Year and Forgotten Tree

题目描述

一棵树是一个包含 $n-1$ 条边的连通无向图,其中 $n$ 表示顶点数。顶点编号为 $1$ 到 $n$。 Limak 是一只小北极熊。他的熊家庭每年都会准备一棵新年树。有一年,他们的树比往年都漂亮。因此他们决定明年也准备一模一样的树。Limak 负责记住这棵树的结构。 记住整棵树很难。Limak 决定把它记在他的笔记本上。他拿起笔,写下了 $n-1$ 行,每行写两个整数——表示有一条边连接这两个顶点。 但是,当新年快要到来的时候,Limak 被要求重新还原那棵树。当然,麻烦也来了。一年前他还很小,既不认识数字也不认识字母,所以他把每个数字都替换成了问号——那是他唯一认识的符号。这就意味着,在他的笔记中,对于每个顶点编号,他只知道它有多少位数字。至少,他知道没有前导零。 Limak 不想让大家失望。请根据他的记录还原这棵新年树。找出任意一棵与 Limak 记录匹配的树,并输出它的所有边(顺序任意)。也有可能 Limak 记错了,如果没有这样的树,请输出 "-1"。

输入格式

第一行包含一个整数 $n$($2 \le n \le 200000$),表示顶点数。 接下来的 $n-1$ 行每行包含两个用空格分隔的非空字符串,这两个字符串只包含问号。没有任何字符串的长度超过 $n$ 的位数。

输出格式

如果没有符合条件的树,输出仅包含一行 “-1”。 否则,输出任意一棵与 Limak 记录相符的树。输出 $n-1$ 行,每行用空格分隔两个整数,表示有一条边连接这两个顶点。边的顺序任意。

说明/提示

由 ChatGPT 5 翻译