1 solutions

  • 0
    @ 2024-3-22 19:53:30
    #include<bits/stdc++.h>
    using namespace std;
    const int N=2e5+10;
    int dist[N];
    int dx[]={1,1,2};
    int dy[]={-1,1,0};
    int start,ee;
    int bfs(int x)
    {
        memset(dist,0x3f,sizeof dist); //初始化距离 
        dist[x]=0; //起点步数 
        queue<int> q;
        q.push(x);
        while(q.size())
        {
            int t=q.front();
            q.pop();
            if(t==ee) //走到终点 
            {
                return dist[ee];
            }
            //cout<<t<<endl; 
            for(int i=0;i<3;i++) //3中走法 
            {
                int a=dx[i]*t+dy[i];
                if(a<0||a>=N) continue;
                if(dist[a]!=0x3f3f3f3f) continue;
                dist[a]=dist[t]+1;
                q.push(a);
            }
        }
        return -1;
    }
    int main()
    {
        cin>>start>>ee;
        cout<<bfs(start);
        return 0;
    }
    
    • 1

    Information

    ID
    1007
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    3
    Tags
    (None)
    # Submissions
    37
    Accepted
    10
    Uploaded By