#GT010. 钥匙和房间

钥匙和房间

说明

有 n 个房间,房间按从 0 到 n - 1 编号。最初,除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。

当你进入一个房间,你可能会在里面找到一套不同的钥匙,每把钥匙上都有对应的房间号,即表示钥匙可以打开的房间。你可以拿上所有钥匙去解锁其他房间。

给你一个数组 rooms 其中 rooms[i] 是你进入 i 号房间可以获得的钥匙集合。如果能进入 所有 房间输出 yes,否则输出 no。

下面举两个例子:

示例 1: 

输入:rooms = [[1],[2],[3],[]] 

输出:yes 

解释: 

我们从 0 号房间开始,拿到钥匙 1。 

之后我们去 1 号房间,拿到钥匙 2。 

然后我们去 2 号房间,拿到钥匙 3。 

最后我们去了 3 号房间。 由于我们能够进入每个房间,所以输出 yes。 

示例 2: 

输入:rooms = [[1,3],[3,0,1],[2],[0]] 

输出:false 

解释:我们不能进入 2 号房间。

输入格式

第一行一个整数 n

接下来从第二行开始,每行内容都表示一个房间,每行开头都有一个整数 m 表示该房间内钥匙的数量

第 i 行表示第 i - 2 号房间

输出格式

yes 或者 no ,即是否能进入所有房间

样例

4
1 1
1 2
1 3
0
yes

提示

数据范围:
  • 2 <= n <= 1000
  • 0 <= m <= 1000
  • 1 <= sum(m) <= 3000
  • 0 <= rooms[i][j] < n
  • 所有 rooms[i] 的值 互不相同