Short question, I implemented the Flood Fill Algorithm (Basically the first pseudo-code) into my C++ code and it works perfectly only I need to record how many tiles it's removed from the origin like this person accomplished.
I'm not looking for manhattan distance though.
This is my code. I omitted unnecessary code.
class MovementTile
{
public:
    int x, y;
    bool CanMoveTo;
    bool IsPassable;
    bool Visited;
    MovementTile(int _x, int _y, bool _IsPassable)
    {
        x = _x;
        y = _y;
        IsPassable = _IsPassable;
        Visited = false;
        CanMoveTo = false;
    }
};
void Fill(MovementTile* _tile, int _x, int _y)
    {
        if (!_tile->Visited)
        {
            if (!_tile->IsPassable)
            {
                _tile->Visited = true;
            }
            else
            {
                _tile->Visited = true;
                _tile->CanMoveTo = true;
                if (_x - 1 > 0)
                {
                    Fill(TileList[_y][_x - 1], _x - 1, _y);
                }
                if (_y - 1 > 0)
                {
                    Fill(TileList[_y - 1][_x], _x, _y - 1);
                }
                if (_y + 1 < TileList[_y].size())
                {
                    Fill(TileList[_y + 1][_x], _x, _y + 1);
                }
                if (_x + 1 < TileList[_y].size())
                {
                    Fill(TileList[_y][_x + 1], _x + 1, _y);
                }
            }
        }
    }