poj--3278--Catch That Cow(bfs)
2016-02-29 17:49
375 查看
Catch That Cow
Description
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number
line. Farmer John has two modes of transportation: walking and teleporting.
* Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minute
* Teleporting: FJ can move from any point X to the point 2 × X in a single minute.
If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?
Input
Line 1: Two space-separated integers: N and K
Output
Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.
Sample Input
Sample Output
Hint
The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 67914 | Accepted: 21397 |
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number
line. Farmer John has two modes of transportation: walking and teleporting.
* Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minute
* Teleporting: FJ can move from any point X to the point 2 × X in a single minute.
If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?
Input
Line 1: Two space-separated integers: N and K
Output
Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.
Sample Input
5 17
Sample Output
4
Hint
The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.
#include<cstdio> #include<cstring> #include<queue> #include<algorithm> using namespace std; #define MAXN 1000000+10 int vis[MAXN]; int ans,n,k; struct node { int x,step; }p,temp; int check(int x) { if(x<0||x>=MAXN||vis[x]) return 0; return 1; } int bfs() { queue<node>q; p.step=0; vis =1; p.x=n; while(!q.empty()) q.pop(); q.push(p); while(!q.empty()) { p=q.front(); q.pop(); temp=p; if(p.x==k) return p.step; temp.x=p.x+1; if(check(temp.x)) { vis[temp.x]=1; temp.step=p.step+1; q.push(temp); } temp.x=p.x-1; if(check(temp.x)) { vis[temp.x]=1; temp.step=p.step+1; q.push(temp); } temp.x=p.x*2; if(check(temp.x)) { vis[temp.x]=1; temp.step=p.step+1; q.push(temp); } } return -1; } int main() { while(scanf("%d%d",&n,&k)!=EOF) { memset(vis,0,sizeof(vis)); ans=bfs(); printf("%d\n",ans); } return 0; }
相关文章推荐
- RAC ORA-01102
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- 迭代器遍历List和Set_List迭代器源代码分析
- the Outline of Machine Learning
- 利用github pages创建简单的网站
- 设置默认短信的渣渣翻译
- FPGA知识大梳理(三)verilogHDL语法入门(2)知识汇总
- 打造业务类批量生产框架
- leetcode 279. Perfect Squares
- madvise和fadvise的区别
- mySQl数据库中不能插入中文的处理办法
- 假期德国实践报告 学习
- 菜单选项卡-2中方法加载选项卡的内容
- 【作业】第一周作业
- iOS 类别 (category)和 类扩展 (extension)的区别
- PDO的使用
- 机器学习常见算法分类汇总
- Web 单点登录系统 JA-SIG CAS
- 在Xcode中使用Git进行源码版本控制
- windows下遍历文件夹