841. Keys and Rooms

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
class Solution {
public boolean canVisitAllRooms(List<List<Integer>> rooms) {
int roomCount = rooms.size();
boolean[] visited = new boolean[roomCount];

Queue<Integer> queue = new LinkedList<>();
for (int room : rooms.get(0)) {
queue.offer(room);
}
visited[0] = true;
roomCount--;

while (!queue.isEmpty()) {
int room = queue.poll();
if (visited[room]) {
continue;
}
visited[room] = true;
roomCount--;

for (int nextRoom : rooms.get(room)) {
queue.offer(nextRoom);
}
}

return roomCount == 0;
}
}

References

841. Keys and Rooms