public class Map
{
  private int[][] bitmap;

  public Map (int[][] m)
  {
    bitmap = m;
  }

  public String toString()
  {
    int i, j;
    StringBuffer buf = new StringBuffer();
    for (i = 0; i < bitmap.length; i++) {
      for (j = 0; j < bitmap[i].length; j++) {
         if (bitmap[i][j] == 0) {
           buf.append(' ');
         } else {
           buf.append('#');
         }
      }
      buf.append('\n');
    }
    return buf.toString();
  }

  public void floodfill(int row, int col)
  {
    if (!inRange(row, col) || bitmap[row][col] == 1)
      return;
    bitmap[row][col] = 1;
    if (inRange(row - 1, col))
      floodfill(row - 1, col);
    if (inRange(row + 1, col))
      floodfill(row + 1, col);
    if (inRange(row, col - 1))
      floodfill(row, col - 1);
    if (inRange(row, col + 1))
      floodfill(row, col + 1);
  }

  private boolean inRange(int row, int col)
  {
    if (row >= 0 && row < bitmap.length && col >= 0 && col < bitmap[row].length)
      return true;
    else
      return false;
  }

}
