1 条题解

  • 0
    #include<algorithm> 
    #include<bitset> 
    #include<cstdio> 
    #include<cstring> 
    #include<ctime> 
    #include<cmath> 
    #include<cstdlib> 
    #include<iostream> 
    #include<iomanip> 
    #include<map> 
    #include<queue> 
    #include<stack> 
    #include<set> 
    #include<vector> 
    #include<bits/stdc++.h>
    using namespace std;
    const int MAXN=100000+10;
    int n,k;
    bool vis[MAXN];
    struct Node
    {
       int x,steps;
       Node(int _x,int _steps):x(_x),steps(_steps){};
    };
    queue<Node> q;
    void bfs()
    {
        q.push(Node(n,0));
        vis[n]=true;
        while(!q.empty())
        {
            Node cur=q.front();
            q.pop();
            int x=cur.x;
            if(x==k)
            {
                cout<<cur.steps<<endl;
                break;
            }
            else for(int i=1;i<=3;++i)
            {
                int nx;
                if(i==1)nx=x-1;
                if(i==2)nx=x+1;
                if(i==3)nx=x*2;
                if(nx>=0&&nx<=100000&&!vis[nx])
                {
                    vis[nx]=true;
                    q.push(Node(nx,cur.steps+1));
                }
            }
        }
    }
    int main()
    {
        memset(vis,false,sizeof(vis));
        cin>>n>>k;
        if(n==k)
        {
            cout<<0<<endl;
            return 0;
        }
        bfs();
        return 0;
    }
    
    
    
    
  • 1

信息

ID
2079
难度
8
分类
(无)
标签
递交数
12
已通过
6
通过率
50%
被复制
3
上传者