基本思路: 最基本的深度优先遍历算法的应用。
class Solution {
public:
void DFS(int room_Num,vector<vector<int>>& rooms,vector<bool>& HavenOpen){
HavenOpen[room_Num] = true;
for(int n:rooms[room_Num]){
if(HavenOpen[n] == false){
DFS(n,rooms,HavenOpen);
}
}
return;
}
bool canVisitAllRooms(vector<vector<int>>& rooms) {
int Len = rooms.size();
vector<bool> HavenOpen(Len - 1, false);
DFS(0,rooms,HavenOpen);
for(int i=0;i<Len;i++) if(!HavenOpen[i]) return false;
return true;
}
};