-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path52_canVisitAllRooms.py
More file actions
29 lines (29 loc) · 1.09 KB
/
52_canVisitAllRooms.py
File metadata and controls
29 lines (29 loc) · 1.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
'''841. Keys and Rooms
There are n rooms labeled from 0 to n - 1 and all the rooms are locked except
for room 0. Your goal is to visit all the rooms. However, you cannot enter
a locked room without having its key.
When you visit a room, you may find a set of distinct keys in it. Each
key has a number on it, denoting which room it unlocks, and you can take
all of them with you to unlock the other rooms.
Given an array rooms where rooms[i] is the set of keys that you can obtain
if you visited room i, return true if you can visit all the rooms, or false otherwise.
Example 1:
Input: rooms = [[1],[2],[3],[]]
Output: true
Explanation:
We visit room 0 and pick up key 1.
We then visit room 1 and pick up key 2.
We then visit room 2 and pick up key 3.
We then visit room 3.
Since we were able to visit every room, we return true.'''
from typing import List
class Solution:
def canVisitAllRooms(self, rooms: List[List[int]]) -> bool:
visit=[0]*len(rooms)
def dfs(node):
visit[node]=1
for child in rooms[node]:
if visit[child]==0:
dfs(child)
dfs(0)
return all(visit)