# main idea: DFS
1. create set to record all rooms can be open
2. dfs recursively traverse non-visited rooms within current room's keys
3. at lowest level, check if len visited rooms == len all rooms
class Solution:
def canVisitAllRooms(self, rooms: List[List[int]]) -> bool:
# time O(N+K) space O(N)
seen = set()
k = 0
seen.add(0)
def dfs(k,seen,rooms):
for kk in rooms[k]:
if kk not in seen:
seen.add(kk)
dfs(kk,seen,rooms)
if len(rooms) == len(seen):
return True
return False
return dfs(k,seen,rooms)