23 lines
391 B
Go
23 lines
391 B
Go
package q841
|
|
|
|
func canVisitAllRooms(rooms [][]int) bool {
|
|
locked := len(rooms) - 1
|
|
|
|
opened := make([]bool, len(rooms))
|
|
opened[0] = true
|
|
|
|
queue := []int{0}
|
|
for ; len(queue) > 0; queue = queue[1:] {
|
|
for _, i := range rooms[queue[0]] {
|
|
if opened[i] {
|
|
continue
|
|
}
|
|
opened[i] = true
|
|
locked--
|
|
queue = append(queue, i)
|
|
}
|
|
}
|
|
return locked == 0
|
|
}
|
|
|
|
var _ = canVisitAllRooms
|