题目:841. 钥匙和房间
思路
深度优先搜索,只从0号房间进入,最后统计遍历情况,如果有没有遍历到的,返回false,否则返回true;
代码
class Solution {
private:
void dfs(vector<vector<int>>& rooms, vector<bool>& visited, int x)
{
for(const auto& key : rooms[x])
{
// 比如[1]
if(!visited[key])
{
visited[key] = true;
dfs(rooms, visited, key);
}
}
}
public:
bool canVisitAllRooms(vector<vector<int>>& rooms) {
int i, j;
int n = rooms.size();
vector<bool> visited(n, false);
visited[0] = true;
dfs(rooms, visited, 0);
for(i = 0; i < n; i++)
{
if(!visited[i])
{
return false;
}
}
return true;
}
};