60分求助!There are 4TLEs.
查看原帖
60分求助!There are 4TLEs.
775551
caojiaming楼主2023/1/23 16:20
#include <bits/stdc++.h>
using namespace std;
map<signed,bool> vis;
signed n;
struct pos
{
    signed x;
    signed cnt;
};
void bfs()
{
    queue<pos> q;
    q.push(pos{1,0});
    while(!q.empty())
    {
        signed x=q.front().x;
        signed cnt=q.front().cnt;
        q.pop();
        if(x<1||x>n) continue;
        if(vis[x]) continue;
        vis[x]=true;
        if(x==n)
        {
            cout<<cnt;
            break;
        }
        q.push(pos{x+1,cnt+1});
        q.push(pos{x-1,cnt+1});
        q.push(pos{x*2,cnt+1});
    }
}
signed main()
{
    scanf("%d",&n);
    bfs();
    return 0;
}
2023/1/23 16:20
加载中...