poj3278
2011-05-05 18:19
218 查看
Catch That Cow
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. Source USACO 2007 Open Silver |
#include <iostream> #include <cstring> #include <queue> using namespace std; const int SIZE=210000; typedef struct { int x; int time; }Loc; queue<Loc> lqueue; bool visit[SIZE]; int main() { Loc temp, temp1; int n,k; int min_time; while(cin>>n>>k) { memset(visit,0,sizeof(visit)); temp.x=n; temp.time=0; visit[temp.x]=true; lqueue.push(temp); while(!lqueue.empty()) { temp=lqueue.front(); lqueue.pop(); if(temp.x==k)//find { min_time=temp.time; break; } temp1.time=temp.time+1; //W op temp1.x=temp.x+1; if(!visit[temp1.x] && temp1.x<=100000 && temp1.x>=0) //检查是否越界 { visit[temp1.x]=true; lqueue.push(temp1); } temp1.x=temp.x-1; if(!visit[temp1.x] && temp1.x<=100000 && temp1.x>=0) { visit[temp1.x]=true; lqueue.push(temp1); } //T op temp1.x=2*temp.x; if(!visit[temp1.x] && temp1.x<=100000 && temp1.x>=0) { visit[temp1.x]=true; lqueue.push(temp1); } } while(!lqueue.empty()) { lqueue.pop(); } cout<<min_time<<endl; } return 0; }
相关文章推荐
- POJ 3278----Catch that cow(广搜) 注意一维及方向数组
- POJ 3278 Catch That Cow
- POJ 3278 Catch That Cow
- poj 3278 Catch That Cow(bfs)
- Poj 3087 + Hdu 1312 + Hdu 1241 + Poj 3278 (基础BFS DFS)
- [搜索] POJ 3278 Catch that Cow 广搜的讨论
- POJ-3278 Catch That Cow (BFS入门题
- poj 3278 BFS
- POJ 3278 Catch That Cow【BFS】
- POJ 3278 Catch That Cow
- poj 3278
- poj 3278( 搜索 )
- POJ 3278 Catch That Cow
- poj 3278 catch that cow
- poj 3278 -- Catch That Cow
- POJ 3278 Catch That Cow【bfs】
- poj 3278 Catch That Cow 优化深搜
- Catch That Cow(POJ 3278)
- POJ 3278 Catch That Cow ——bfs
- POJ 3278 Catch that cow