RT,就很莫名其妙,不知道错哪了
#include<bits/stdc++.h>
using namespace std;
struct node
{
int l,ans;
};
int main()
{
queue<node> q;
q.push({1,0});
int n,vis[100000005];
cin>>n;
while(!q.empty())
{
node t=q.front();
q.pop();
vis[t.l]=1;
if(t.l==n)
{
cout<<t.ans;
return 0;
}
int d1=t.l-1,d2=t.l+1,d3=t.l*2;
if(d1>1&&d1<n&&vis[d1]==0)
{
q.push({d1,t.ans+1});
}
if(d2>1&&d2<n&&vis[d2]==0)
{
q.push({d2,t.ans+1});
}
if(d3>1&&d3<n&&vis[d3]==0)
{
q.push({d3,t.ans+1});
}
}
return 0;
}