https://www.acwing.com/problem/content/1102/
#include<iostream>
#include<cstring>
using namespace std;
const int N=200010;
int n,m;
int dist[N];
int q[N];
void bfs(int u)
{
dist[u]=0;
int hh=0,tt=0;
q[0]=u;
while(hh<=tt)
{
int t=q[hh++];
if(t>2*max(n,m)) continue;
if(dist[t+1]==-1)
{
dist[t+1]=dist[t]+1;
q[++tt]=t+1;
}
if(dist[t-1]==-1)
{
dist[t-1]=dist[t]+1;
q[++tt]=t-1;
}
if(dist[2*t]==-1)
{
dist[2*t]=dist[t]+1;
q[++tt]=2*t;
}
}
}
int main()
{
cin>>n>>m;
memset(dist,-1,sizeof dist);
bfs(n);
cout<<dist[m]<<endl;
return 0;
}
标签:dist,头牛,int,tt,bfs,++,抓住,include
From: https://www.cnblogs.com/linearlearn/p/17216607.html