Untitled
user_0781376
plain_text
9 months ago
1.5 kB
22
Indexable
import java.util.*;
public class Main {
public static boolean canVisitAllRooms(List<List<Integer>> rooms) {
Set<Integer> visited = new HashSet<>(); // Track visited rooms
Stack<Integer> toVisit = new Stack<>(); // Stack for DFS traversal
toVisit.push(0); // Start from room 0
visited.add(0);
while (!toVisit.isEmpty()) {//until the rooms to be visited is empty
int currentRoom = toVisit.pop();//take out the room to visit
for (int key : rooms.get(currentRoom)) //extract the key
{
if (!visited.contains(key)) //if visited room does contain the key
{
visited.add(key);//add that key to visted room
toVisit.push(key);//push that key to room to be visited
}
}
}
return visited.size() == rooms.size(); // Check if all rooms are visited
}
public static void main(String[] args) {
List<List<Integer>> rooms1 = Arrays.asList(
Arrays.asList(1), Arrays.asList(2), Arrays.asList(3), Arrays.asList()
);
System.out.println(canVisitAllRooms(rooms1)); // Output: true
List<List<Integer>> rooms2 = Arrays.asList(
Arrays.asList(1, 3), Arrays.asList(3, 0, 1), Arrays.asList(2), Arrays.asList(0)
);
System.out.println(canVisitAllRooms(rooms2)); // Output: false
}
}
Editor is loading...
Leave a Comment