3
int minimumOperations(vector<int> &nums, int start, int goal) {7
vector<bool> vis(1001, false);10
if (0 <= goal && goal <= 1000) vis[goal] = true;14
while (!q.empty() && !done) {17
for (int i = 0; i < sz; i++) {24
for (int j = 0; j < n; j++) {25
if (0 <= cur - nums[j] && cur - nums[j] <= 1000 && !vis[cur - nums[j]]) {26
q.push(cur - nums[j]);27
vis[cur - nums[j]] = true;29
if (0 <= cur + nums[j] && cur + nums[j] <= 1000 && !vis[cur + nums[j]]) {30
q.push(cur + nums[j]);31
vis[cur + nums[j]] = true;33
if (0 <= (cur ^ nums[j]) && (cur ^ nums[j]) <= 1000 && !vis[cur ^ nums[j]]) {34
q.push(cur ^ nums[j]);35
vis[cur ^ nums[j]] = true;41
return done ? dist : -1;