841.钥匙和房间
题目链接:841.钥匙和房间
代码如下:
class Solution
{
public:
bool canVisitAllRooms(vector<vector<int>>& rooms)
{
vector<bool> visited(rooms.size(),false);
dfs(rooms,visited,0);
// bfs(rooms,visited,0);
for(int i=0;i<visited.size();i++)
{
if(!visited[i]) return false;
}
return true;
}
private:
//深度遍历
void dfs(vector<vector<int>>& rooms,vector<bool>& visited,int key)
{
if(visited[key]) return;
visited[key]=true;
vector<int> keys=rooms[key];
for(int k:keys)
{
dfs(rooms,visited,k);
}
}
//广度遍历
void bfs(vector<vector<int>>& rooms,vector<bool>& visited,int key)
{
queue<int> que;
visited[key]=true;
que.push(key);
while(!que.empty())
{
int cur=que.front();
que.pop();
vector<int> keys=rooms[cur];
for(int k:keys)
{
if(!visited[k])
{
visited[k]=true;
que.push(k);
}
}
}
}
};