Catch That Cow POJ - 3278

#include
#include
#include
#include
#include
#include
using namespace std;
int vis[200001];//开两倍 不然传送可能数组越界
queue q;
int n,k;
void bfs()
{
q.push(n);
vis[n]=1;
while(!q.empty())
{
int xx=q.front();
q.pop();
int tt;
for(int i=0;i<3;i++)//注意这里依然用循环构造三种情况 三种情况单独设变量会很麻烦
{
if(i0)
tt=2*xx;
if(i
1)
tt=xx+1;
if(i2)
tt=xx-1;
if(tt
k)
{
cout< return ;
}
if(tt>=0&&tt<=100000&&!vis[tt])//判断条件里一定要有小于十万 不然可能数组越界
{
q.push(tt);
vis[tt]=vis[xx]+1;
}
}
}
}
int main()
{
cin>>n>>k;
if(n==k)
{
cout<<0;//特判 因为这错了三次
return 0;
}
bfs();
return 0;
}

你可能感兴趣的:(集训搜索)