Keys and Rooms LeetCode solution in C++
1class Solution {2void dfs(vector<vector<int>> &rooms, unordered_set<int> &keys, unordered_set<int> &visited,3int curr) {4visited.insert(curr);5for (int k : rooms[curr]) keys.insert(k);6for (int k : keys)7if (visited.find(k) == visited.end()) dfs(rooms, keys, visited, k);8}910public:11bool canVisitAllRooms(vector<vector<int>> &rooms) {12unordered_set<int> keys;13unordered_set<int> visited;14dfs(rooms, keys, visited, 0);15return visited.size() == rooms.size();16}17};