How to solve this ..?

Please help
problem:
(Problem - 520B - Codeforces)
can we solve this problem using bfs ??
is there any other approach ??

You can use dp to do it.

Yes, you can use BFS.

Code
#include <bits/stdc++.h>
 
using namespace std;
 
#define ll long long
#define ld long double
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define pb push_back
#define eb emplace_back
#define F first
#define S second
#define mp make_pair
 
template <typename Container>
void print(Container& container)
{
    auto Start = container.begin(), End = container.end();
    while (Start != End) cout << *(Start++) << "\n";
    cout << '\n';
}
 
inline void solve()
{
    int n, m;
    cin >> n >> m;
    queue <pair <int, int>> q;
    vector <int> ans(1e6, -1);
    q.emplace(n, 0);
    while (!q.empty())
    {
        auto p = q.front();
        ans[p.F] = p.S;
        q.pop();
        if (p.F == m)
        {
            cout << p.S << '\n';
            return;
        }
        if (p.F <= 2 * m && ans[2 * p.F] == -1) q.emplace(2 * p.F, p.S + 1);
        if (p.F - 1 >= 0 && ans[p.F - 1] == -1) q.emplace(p.F - 1, p.S + 1);
    }
}
 
int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int T = 1;
    while (T--) solve();
}

Just make sure that you don’t visit unnecessary numbers.