class Solution {
public:
void dfs(int pos, vector<bool>& flag, vector<vector<int>>& rooms)
{
flag[pos] = true;
for(int i=0; i<rooms[pos].size(); i++){
if(!flag[rooms[pos][i]]){
dfs(rooms[pos][i], flag, rooms);
}
}
}
bool canVisitAllRooms(vector<vector<int>>& rooms) {
vector<bool> flag(rooms.size(), false);
dfs(0, flag, rooms);
for(int i=0; i<rooms.size(); i++){
if(!flag[i]) return false;
}
return true;
}
};