#P1842. Parking
Parking
本题没有可用的提交语言。
题目描述
一个地下车库由位于不同楼层的 个停车位组成。每个停车位用一个介于 到 之间的数字表示,且没有两个停车位的编号相同。每个停车位是一个独立的小房间,只能停放一辆车。其中一些房间通过通道直接相连。
一辆车不能穿过被其他车辆占用的停车位。出口位于编号为 的房间,该房间不能停车(但任何车辆都可以通过)。
任意两个停车位之间有且仅有一条路径。通往出口的路径上,每一对相邻的房间都位于车库的相邻楼层,且离出口较近的房间总是位于较高的楼层。
拉尔夫·马赫(Ralph Maher)把他的车停在了编号为 的房间,现在他想离开车库。问题是,他需要经过的一些房间里停着其他车辆。他必须把停在这些房间里的车推到下一层的房间,才能清空道路。一次“推”的操作定义为将一辆车从一个停车位向下移动一层到另一个停车位。
编写一个程序,确定拉尔夫为了离开车库(即到达编号为 的房间)所需的最少“推”车次数。在通往出口的路径完全清空之前,他不会移动自己的车。
输入
输入的第一行包含三个整数 、 和 (,,)。数字 表示除了停在编号为 的停车位的拉尔夫的车之外,车库里停放的车辆总数。
接下来的 行包含每个停车位的相关信息。第 行包含与编号为 的停车位直接相连且位于其下一层的停车位的信息: 这里有 个这样的停车位,、、...、 是它们的编号。
输入文件的最后一行包含 个整数,表示除拉尔夫的车外,其他车辆所占用的停车位编号。
输出
输出的第一行也是唯一一行应包含拉尔夫为清空通往出口的路径所需的最少“推”车次数。如果无解,输出应包含一行文本 “not solvable”(不包含引号)。
输入示例 1
6 3 2
1 4
1 6
0
1 5
2 2 3
0
4 5
输出示例 1
4
来源
克罗地亚信息学奥林匹克竞赛 2002 年赛题