我對bfs情有獨鍾, 特愛bfsXD
這邊就是我們一開始只能進去第0間room
裡面有一些鑰匙, 我們可以帶走, 然後用這些鑰匙再去開別的房
別的房也有別得鑰匙, 試問是否能把全部的房都打開
就是把他走完就是了, 依序找到房的鑰匙並塞入queue
最後開完後, 檢查是否還有房間是鎖著的, 如果有就回傳False
class Solution {
public:
bool canVisitAllRooms(vector<vector<int>>& rooms) {
vector<bool> locked_room(rooms.size(), true);
queue<int> q;
q.push(0);
while(!q.empty()){
int cur = q.front();
q.pop();
locked_room[cur] = false;
for(auto r: rooms[cur]){
if(locked_room[r] == true){
q.push(r);
}
}
}
for(auto lo: locked_room){
if(lo == true){
return false;
}
}
return true;
}
};