ACM刷题之POJ———— Catch That Cow
来源:互联网 发布:极速浏览器 mac 编辑:程序博客网 时间:2024/06/07 05:49
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
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.
一道bfs题,注意判断条件放在前面,要写vis 否则会死循环
下面是ac代码
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>#include<map>#include<set>#include<queue>#include<string>#include<iostream>using namespace std;#define MID(x,y) ((x+y)>>1)#define CLR(arr,val) memset(arr,val,sizeof(arr))#define FAST_IO ios::sync_with_stdio(false);cin.tie(0);const double PI = acos(-1.0);const int INF = 0x3f3f3f3f;const int N=2e5+7;typedef struct fi{int dis;int bu;}fi;fi fam,now,temps;queue<fi>q;int n,x,cnt;int vis[N];void bfs(){while(!q.empty()){now=q.front();q.pop();temps=now;if(now.dis==x){cnt=now.bu;break;}++now.bu;if(now.dis<x){if(!vis[temps.dis*2]){now.dis=temps.dis*2;q.push(now);vis[now.dis]=1;}if(!vis[temps.dis+1]){now.dis= temps.dis+1;q.push(now);vis[now.dis]=1;}if(!vis[temps.dis-1]){now.dis= temps.dis-1;q.push(now);vis[now.dis]=1;}}else {if(!vis[temps.dis-1]){now.dis= temps.dis-1;q.push(now);vis[now.dis]=1;}}}}int main(){//freopen("f:/input.txt", "r", stdin);int i,j;while(scanf("%d%d",&fam.dis,&x)!=EOF){if(fam.dis==x){printf("0\n");continue;}fam.bu=0;cnt=0;q.push(fam);CLR(vis,0);vis[fam.dis]=1;bfs();printf("%d\n",cnt);}}
- ACM刷题之POJ———— Catch That Cow
- ACM-BFS之Catch That Cow——hdu2717
- poj 3278——Catch That Cow
- poj 3278 ——Catch That Cow(bfs)
- BFS —— POJ 3278 Catch That Cow
- POJ 3278 Catch That Cow ——bfs
- POJ3278——Catch That Cow
- hdu 2717——Catch That Cow
- POJ3278——Catch That Cow
- 【poj3278】Catch that cow——bfs
- POJ3278——Catch That Cow
- bfs入门——Catch That Cow
- POJ3278 Catch That Cow —— BFS
- Catch That Cow——深搜
- poj3278——Catch That Cow
- 寒假训练——POJ - 3278 Catch That Cow bfs and similiar
- Catch That Cow(POJ--
- (poj)Catch That Cow
- How to check CentOS version
- java 蓝桥杯 奇怪的数列
- 二进制概念
- Android5.1-s5p6818平台移植FangGet的ORB-SLAM2(以及OpenCVLib)
- 十天学会单片机(一)
- ACM刷题之POJ———— Catch That Cow
- 浅析生成对抗网络(GAN)—— Generative Adversarial Nets
- LeetCode-21. Merge Two Sorted Lists
- Linux init进程产生过程
- Java线程的join()方法
- viewStub使用
- ossp-uuid-1.6.2移植到arm平台
- JS:innerHTML、innerText和value的区别
- emoji表情的保存