hdu2717

/*
分析:
    广搜。


                           2012-07-19
*/








#include"stdio.h"
#include"string.h"
#include"queue"
using namespace std;


struct node
{
	int x;
	int step;
};
int map[100011];
int s,e;


int judge(int x)
{
	if(x<0 || x>100000)	return 1;
	if(map[x])			return 1;
	return 0;
}
int BFS()
{
	queue<node>q;
	node cur,next;


	cur.x=s;
	cur.step=0;
	map[cur.x]=1;


	q.push(cur);
	while(!q.empty())
	{
		cur=q.front();
		q.pop();


		if(cur.x==e)	return cur.step;


		next.x=cur.x+1;
		if(judge(next.x)==0)
		{
			next.step=cur.step+1;
			map[next.x]=1;
			q.push(next);
		}
		next.x=cur.x-1;
		if(judge(next.x)==0)
		{
			next.step=cur.step+1;
			map[next.x]=1;
			q.push(next);
		}
		next.x=cur.x*2;
		if(judge(next.x)==0)
		{
			next.step=cur.step+1;
			map[next.x]=1;
			q.push(next);
		}
	}
	return -1;
}


int main()
{
	int	ans;
	while(scanf("%d%d",&s,&e)!=-1)
	{
		memset(map,0,sizeof(map));
		ans=BFS();
		printf("%d\n",ans);
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值