求助

回复帖子

@csy2004 2018-10-20 08:49 回复

include<iostream>

using namespace std;

int h=1,t=1,q[100001],a[100001],x,y,ans;

int bfs(int x,int y) {

if(x==y)return 0;
q[t]=x;
t++;
a[x]=0;
while(1)
{
    if(q[h]==y+1||q[h]==y-1||2*q[h]==y)
    return a[q[h]]+1;
    if(q[h]>y)
    {
        if(a[q[h]-1]==0&&q[h]-1!=x)
        q[t]=q[h]-1,a[q[t]]=a[q[h]]+1,t++;
    }
    else
    {
        if(a[q[h]+1]==0&&q[h]+1!=x)q[t]=q[h]+1,a[q[t]]=a[q[h]]+1,t++;
        if(a[q[h]-1]==0&&q[h]-1!=x)q[t]=q[h]-1,a[q[t]]=a[q[h]]+1,t++;
        if(a[q[h]*2]==0&&q[h]*2!=x)q[t]=2*q[h],a[q[t]]=a[q[h]]+1,t++;
    }
    h++;
}

} int main() {

int n;
cin>>n;
for(int i=1;i<=n;i++)
{
    ans=0;
    cin>>x>>y;
    ans=bfs(x,y);
    cout<<ans<<endl;
}
return 0;

}

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。