SP1961 ROMANRDS - Roman Roads

题目描述

大约 2000 年前,罗马帝国的疆域广泛,覆盖了欧洲的大部分地区及地中海沿岸。帝国的交通网络由陆路和海路构成(在本题中,这些统称为道路)。每条道路连接两个城市,并且该网络确保了所有城市均可从罗马到达。然而,建设这样的网络需要投入大量资源,比如鹅卵石和浮标。因此,为了节省建设和维护的费用,以便将余下的钱用于其他用途如采购美酒,帝国建造了可能的最低成本网络。 在每条道路上有一个指示牌,标明与该道路相连的所有其他道路(通过其两端的城市)。帝国拥有 $N$ 条道路,编号为 $1, 2, \ldots, N$。传说中,一位旅行者沿途记录下了每条道路指示牌上的信息,从而制作了一张详尽的地图。 2000 年后,一位年轻的考古学家意外地发现了这张疑似的古地图。你的任务是编写一个程序来验证这是否可能是一张罗马帝国的真实地图,并找出每条道路连接的城市。请注意,合法地图中的道路必须连接两个不同的城市。 (免责声明:有关交通网络的描述仅为此问题设定,与历史事实无关,请勿在学术论文中引用:这是虚构的。)

输入格式

第一行输入包含一个整数 $N$,表示道路的数量,$1 \leq N \leq 500$。接下来的 $N$ 行中,每行包含若干个空格分隔的整数,描述与第 $i$ 条道路相连的其他道路。行首为一个整数 $d_i$,表示相连道路的数量,接下来是 $d_i$ 个整数,表示这些道路的编号。 虽然目前尚不确定地图是否有效,但输入是逻辑一致的:若道路 $x$ 出现在道路 $y$ 的指示牌上,那么道路 $y$ 必然出现在道路 $x$ 的指示牌上(如果不然,考古学家会立即发现输入不合法)。

输出格式

如果输入不能描述一个合法的地图,输出 `NO`。 若输入能描述一个合法的地图,则输出 `YES`。接下来 $N$ 行中,每行输出两个由空格分隔的整数,表示该道路连接的两个城市编号。城市编号的选择由你决定,唯一的限制是所有编号必须处于整数范围 $1$ 到 $M$ 之间,其中 $M$ 是城市总数。此外,每个城市只能有一个唯一编号。 需要注意的是,我们无法知道城市的具体位置或道路的直线距离,因此无从得知该网络的实际成本。考古学家愿意接受任何无法判断是否存在更便宜网络的地图,前提是没有已知的具体成本。假设每条道路都有一个正向成本。 **本翻译由 AI 自动生成**