Maximum Candies You Can Get from Boxes
You have n boxes labeled from 0 to n - 1. You are given four arrays: status, candies, keys, and containedBoxes where:
status[i]is1if thei^thbox is open and0if thei^thbox is closed.candies[i]is the number of candies in thei^thbox.keys[i]is a list of the labels of the boxes you can open after opening thei^thbox.containedBoxes[i]is a list of the boxes you found inside thei^thbox.
You are given an integer array initialBoxes that contains the labels of the boxes you initially have. You can take all the candies in any open box, use the keys in it to open new boxes, and use the boxes you find in it.
Return the maximum number of candies you can get following the rules above.
Example 1
Input
status = [1,0,1,0], candies = [7,5,4,100], keys = [[],[],[1],[]], containedBoxes = [[1,2],[3],[],[]], initialBoxes = [0]Output
16Starting with box 0, you collect candies from boxes 0, 2, and then 1 after finding its key, but box 3 remains closed, for a total of 16 candies.
Example 2
Input
status = [1,0,0,0,0,0], candies = [1,1,1,1,1,1], keys = [[1,2,3,4,5],[],[],[],[],[]], containedBoxes = [[1,2,3,4,5],[],[],[],[],[]], initialBoxes = [0]Output
6Opening box 0 gives you boxes 1 through 5 and their keys, so you can collect all 6 candies.
Constraints
n == status.length == candies.length == keys.length == containedBoxes.length1 <= n <= 1000status[i]is either0or1.1 <= candies[i] <= 10000 <= keys[i].length <= n0 <= keys[i][j] < n- All values of
keys[i]are unique. 0 <= containedBoxes[i].length <= n0 <= containedBoxes[i][j] < n- All values of
containedBoxes[i]are unique. - Each box is contained in one box at most.
0 <= initialBoxes.length <= n0 <= initialBoxes[i] < n