答案:
class Solution {
public boolean canVisitAllRooms(List<List<Integer>> rooms) {
Set<Integer> isArrive = new HashSet<>();
Set<Integer> newArrive = new HashSet<>();
isArrive.add(0);
newArrive.add(0);
while(newArrive.size()!=0){
newArrive = getNewArrive(newArrive,isArrive,rooms);
System.out.println(newArrive);
}
System.out.println(newArrive);
if(isArrive.size()==rooms.size()){
return true;
}else{
return false;
}
}
public Set<Integer> getNewArrive(Set<Integer> newArrive,Set<Integer> isArrive,List<List<Integer>> rooms){
Set<Integer> nextNewArrive = new HashSet<>();
Iterator<Integer> iterator = newArrive.iterator();
while (iterator.hasNext()) {//遍历newArrive
int newRoom = iterator.next();
for(int i=0;i<rooms.size();i++){//找到rooms里的newArrive元素的房间
if(i==newRoom){
for(int k=0;k<rooms.get(i).size();k++){
int room = rooms.get(i).get(k);
if(!isArrive.contains(room)){
isArrive.add(room);
nextNewArrive.add(room);
}
}
}
}
}
return nextNewArrive;
}
}