求助。。。为毛过不了样例。。。

回复帖子

@xiaolou 2018-10-04 14:28 回复
#include <bits/stdc++.h>

using namespace std;
struct Node
{
    int x,step;
};
queue <Node> q;
bool vis[1000005]; 
int move[1000005][3]; 
int bfs(int start,int end)
{
    Node now;
    now.x=start;
    now.step=0;
    q.push(now);
    while(!q.empty())
    {
        now=q.front();
        q.pop();
        for(int i=0;i<2;i++)
        {
            Node next;
            next.x=move[now.x][i];
            if(next.x>=1&&next.x<=end*4&&vis[next.x]==false)
            {
                if(next.x==end)
                    return next.step;
                next.step=now.step+1;
                vis[next.x]=true;
                q.push(next);       
            }
        }
    }
}

int main()
{
    for(int i=1;i<=1000005;i++)
    {
        move[i][0]=i+1;
        move[i][1]=i-1;
        move[i][2]=2*i;
    }
    int n;
    cin >> n;
    for(int i=1;i<=n;i++)
    {
        int start,end;
        cin >> start >> end;
        cout << bfs(start,end) <<endl;
    }
    return 0;
}