P6896 [ICPC 2014 WF] Maze Reduction

题目描述

Jay 经营着一个小型嘉年华,里面有各种游乐设施。不幸的是,最近发生的过山车事故、厕所的水灾以及小丑事件使得 Jay 的嘉年华在公众中声誉不佳。由于付费顾客减少和收入下降,他需要削减一些成本以维持经营。 嘉年华中最大的吸引点之一是一个大型且复杂的迷宫。它由各种圆形房间组成,这些房间通过狭窄、曲折的走廊连接。游客们喜欢在其中迷路并尝试绘制地图。Jay 注意到,有些房间可能实际上是相同的。如果是这样,他可以在不被人注意的情况下缩小迷宫的规模。 如果你被放置在房间 $A$ 或 $B$ 中(并且你知道迷宫的地图),仅通过探索迷宫无法判断你是从 $A$ 还是 $B$ 开始的,那么两个房间 $A$ 和 $B$ 就是实际上相同的。每个房间的走廊出口均匀分布,你不能在房间中做标记或留下任何东西(特别是,你无法判断你是否曾经访问过它)。房间的唯一识别特征是它们的出口数量。走廊也足够曲折,以至于彼此无法区分,但当你进入一个房间时,你知道你是从哪个走廊来的,因此可以通过它们在房间周围出现的顺序进行一些导航。 Jay 向嘉年华迷宫协会求助。那就是你!编写一个程序来确定迷宫中所有实际上相同的房间集合。

输入格式

输入由一个单一的测试用例组成。第一行包含一个整数 $n$,表示迷宫中的房间数量($1 \leq n \leq 100$)。房间从 1 到 $n$ 编号。接下来的 $n$ 行按顺序描述每个房间。每行由一个整数 $k$ 组成,表示该房间有 $k$ 个走廊($0 \leq k < 100$),然后是 $k$ 个不同的整数,按顺时针顺序列出每个走廊连接到的房间(从任意起点开始)。房间不与自身连接。

输出格式

对于每个最大化的实际上相同的房间集合(忽略大小为 1 的集合),显示一行,其中包含集合中房间编号的递增顺序。按最小房间编号对集合进行排序。如果没有这样的集合,则显示 none。

说明/提示

时间限制:2000 毫秒,内存限制:1048576 kB。 国际大学生程序设计竞赛(ACM-ICPC)世界总决赛 2014。 题面翻译由 ChatGPT-4o 提供。