LeetCode 841. 钥匙和房间
问有向图是否能从一个点开始遍历全图,遍历一遍看是否访问过所有节点即可
用的bfs因为好写
class Solution {
bool bfs(const vector<vector<int>>& rooms) {
vector<int> vis(rooms.size(), 0);
queue<int> q;
q.push(0), vis[0] = 1;
while (!q.empty()) {
int key = q.front(); q.pop();
vector<int> keys = rooms[key];
for (int key : keys)if (!vis[key]) q.push(key), vis[key] = 1;
}
for (int i : vis)if (i == 0) return 0;
return 1;
}
public:
bool canVisitAllRooms(vector<vector<int>>& rooms) {
return bfs(rooms);
}
};