Untitled

 avatar
user_0781376
plain_text
3 days ago
1.5 kB
18
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