---
title: "841. Keys and Rooms"
url: "https://laigary.com/interview/coding/841-keys-and-rooms"
type: "note"
section: "coding"
date: "2024-03-12"
updated: "2024-03-12"
tags: ["Graph", "Breadth-First Search", "Depth-First Search"]
---

# 841. Keys and Rooms

[841\. Keys and Rooms](https://leetcode.com/problems/keys-and-rooms/)

透過拿到的鑰匙來造訪後面的房間，是圖形搜索的一種問題。

```python
class Solution:
    def canVisitAllRooms(self, rooms: List[List[int]]) -> bool:
        visited = set()
        visited.add(0)
        queue = deque([0])

        while queue:
            room = queue.popleft()
            for key in rooms[room]:
                if key not in visited:
                    visited.add(key)
                    queue.append(key)
        
        return len(visited) == len(rooms)
```
