Очередь

Очередь — абстрактный тип данных с доступом к элементам  по принципу «первый пришёл — первый вышел» (FIFO, First In — First Out).

Для простоты понимания принципа работы очереди можно представить себе магазинную очередь. И вы стоите посреди нее, чтобы вы оказались напротив кассы, сначала понадобится пропустить всех впереди стоящих людей. А вот для последнего человека в очереди нужно, чтобы кассир обслужил всех людей кроме него самого.
 

В C++ есть готовый STL контейнер — queue. Данный котейнер не позволяет обращаться к любому элементу очереди.

Если вам нужно иметь доступ ко всем элементам очереди, то можете реализовать очередь через массив. 
 
Методы работы с очередью
1) создание пустой очереди без элементов   queue <тип данных> <имя>;
Пример
queue<int> a;

2)добавить значение 5 в конец очереди
a.push(5);  

3) удалить первый элемент в очереди
a.pop();   

4) вернуть в переменную первый элемент в очереди  (без удаления)
int b = a.front();   

5) вернуть true, если очередь пуста,  и false в противном случае.
a.empty()

Примерный алгоритм
добавить в очередь точку (x0,y0)
запомнить цвет начальной точки
пока очередь не пуста
{
  взять из очереди точку (x,y)
  если A[y][x] = цвету начальной точки то
  {
    A[y][x] = 2;
    добавить в очередь точку (x-1,y)
    добавить в очередь точку (x+1,y)
    добавить в очередь точку (x,y-1)
    добавить в очередь точку (x,y+1)
  }
}