标签:
链接:
http://poj.org/problem?id=3278
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 62113 | Accepted: 19441 |
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
Output
Sample Input
5 17
Sample Output
4
Hint
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> #include <queue> using namespace std; #define N 110000 struct node { int x, step; }; int s, e; bool vis[N]; int BFS(int s) { node p, q; p.x = s, p.step = 0; memset(vis, false, sizeof(vis)); vis[s] = true; queue<node>Q; Q.push(p); while(Q.size()) { p = Q.front(), Q.pop(); if(p.x == e) return p.step; for(int i=0; i<3; i++) { if(i==0) q.x = p.x + 1; else if(i==1) q.x = p.x - 1; else if(i==2) q.x = p.x * 2; q.step = p.step + 1; if(q.x>=0 && q.x<N && !vis[q.x]) { Q.push(q); vis[q.x] = true; } } } return -1; } int main() { while(scanf("%d%d", &s, &e)!=EOF) { int ans = BFS(s); printf("%d\n", ans); } return 0; }
(广搜)Catch That Cow -- poj -- 3278
标签:
原文地址:http://www.cnblogs.com/YY56/p/4782893.html