Maximum Candies You Can Get from Boxes LeetCode solution in C++

1
class Solution {
2
public:
3
int maxCandies(vector<int> &status, vector<int> &candies, vector<vector<int>> &keys,
4
vector<vector<int>> &containedBoxes, vector<int> &initialBoxes) {
5
int n = status.size();
6
vector<bool> visited(n, false);
7
queue<int> q;
8
int res = 0;
9
unordered_set<int> st;
10
for (int i = 0; i < initialBoxes.size(); i++) {
11
q.push(initialBoxes[i]);
12
int box = initialBoxes[i];
13
for (int i = 0; i < keys[box].size(); i++) {
14
st.insert(keys[box][i]);
15
}
16
}
17

18
while (!q.empty()) {
19
int box = q.front();
20
q.pop();
21
res += candies[box];
22

23
for (int i = 0; i < containedBoxes[box].size(); i++) {
24
int curr_box = containedBoxes[box][i];
25
if (st.find(curr_box) != st.end() or status[box] == 1) {
26
q.push(curr_box);
27
for (int i = 0; i < keys[curr_box].size(); i++) {
28
st.insert(keys[curr_box][i]);
29
}
30
}
31
}
32
}
33

34
return res;
35
}
36
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0