private void gates(int[][] rooms, Deque<Cell> queue) {
        for (int i = 0; i < rooms.length; i++) {
            for (int j = 0; j < rooms[0].length; j++) {
                if (rooms[i][j] == 0) {
                    queue.offerFirst(new Cell(i, j));
                }
            }
        }
    }
You are given a m x n 2D grid initialized with these three possible values.
     -1 - A wall or an obstacle.
     0 - A gate.
     INF - Infinity means an empty room. We use the value 231 - 1 = 2147483647 to represent INF as
     you may assume that the distance to a gate is less than 2147483647.

Fill each empty room with the distance to its nearest gate. If it is impossible to reach a gate, it should be filled with INF

Time complexity O(n*m)
Space complexity O(n*m)

https://leetcode.com/problems/walls-and-gates/
src/com/interview/graph/WallsAndGates.java