leetcode841钥匙和房间
使用深度优先遍历构造的图,只要访问过就标记已访问
int num=0;
vector<bool>vis;
void dfs(vector<vector<int>>& rooms,int x){
vis[x]=true;
num++;
for(auto& v:rooms[x]){
if(!vis[v])dfs(rooms,v);//说明这个房间没有进去过,所以可以访问
}
}
int main(){
vis.resize(rooms.size(),false);//初始化vis
dfs(rooms,0);//0节点开始遍历
if(num==rooms.size())return true;
return false;
}
- 使用广度优先搜索构造的图
-
vector<bool>vis; int num=0; bool bfs(vector<vector<int>>& rooms){ queue<int>q; q.push(0);//从0开始 vis[0]=true; while(!q.empty()){ int x=q.front();q.pop(); for(auto& v:rooms[x]){ if(!vis[v]){//没有访问过入队 q.push(v); vis[v]=true;//之后再遇见不能再去看了,入队了都会用for去查看房间 } } } }

浙公网安备 33010602011771号