diff --git a/src/l33tcode/841.go b/src/l33tcode/841.go index eebf41d..4c70e87 100644 --- a/src/l33tcode/841.go +++ b/src/l33tcode/841.go @@ -3,7 +3,7 @@ package main import "fmt" func main() { - res := canVisitAllRooms([][]int{{1}, {2}, {}}) + res := canVisitAllRooms([][]int{{1, 3}, {3, 0, 1}, {2}, {0}}) fmt.Printf("%+v\n", res) } @@ -27,11 +27,13 @@ func getAllKeys(index int, seen map[int]struct{}, rooms [][]int) map[int]struct{ keys := map[int]struct{}{} for j := 0; j < len(rooms[index]); j++ { - if _, ok := keys[rooms[index][j]]; ok { + if _, ok := seen[rooms[index][j]]; ok { continue + } else { + seen[rooms[index][j]] = struct{}{} } keys[rooms[index][j]] = struct{}{} - insideKeys := getAllKeys(j, keys, rooms) + insideKeys := getAllKeys(rooms[index][j], seen, rooms) for k := range insideKeys { keys[k] = struct{}{} }