poj 3278 简单BFS
题意:给定农夫和奶牛的初始位置,农夫可以当前位置+1、-1、*2三种移动方式,问最少需要多少分钟抓住奶牛
AC代码:
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int maxn=100000+5;
const int dx[]={-1,1,2};
int d[maxn];
int n,k;
int bfs(){
queue<int>q;
memset(d,-1,sizeof(d));
d[n]=0;
q.push(n);
while(!q.empty()){
int now=q.front();
q.pop();
if(now==k) return d[k];
for(int i=0;i<3;++i){
int w;
if(i==2) w=now*dx[i];
else w=now+dx[i];
if(w<0||w>maxn||d[w]!=-1) continue;
q.push(w);
d[w]=d[now]+1;
}
}
return -1;
}
int main(){
while(scanf("%d%d",&n,&k)!=EOF){
printf("%d\n",bfs());
}
return 0;
}
如有不当之处欢迎指出!
poj 3278 简单BFS的更多相关文章
- poj 3414(简单bfs)
题目链接:http://poj.org/problem?id=3414 思路:bfs简单应用,增对瓶A或者瓶B进行分析就可以了,一共6种状态. #include<iostream> #in ...
- POJ 1101 简单BFS+题意
The Game 题意: Description One morning, you wake up and think: "I am such a good programmer. Why ...
- POJ 3278 经典BFS
进一步了解了bfs; 题意:给你n,然后用+,-,*三种运算使n变成k; 漏洞:在算出新的数字之后,一定要判边界,否则RE,而且在每一步后面都得加判断是否等于K,如果是即刻退出,否则WA,判这个的时候 ...
- POJ 3669 简单BFS
标号 搜 完了-- //By SiriusRen #include <queue> #include <cstdio> #include <cstring> #in ...
- POJ3185(简单BFS,主要做测试使用)
没事做水了一道POJ的简单BFS的题目 这道题的数据范围是20,所以状态总数就是(1<<20) 第一次提交使用STL的queue,并且是在队首判断是否达到终点,达到终点就退出,超时:(其实 ...
- BFS POJ 3278 Catch That Cow
题目传送门 /* BFS简单题:考虑x-1,x+1,x*2三种情况,bfs队列练练手 */ #include <cstdio> #include <iostream> #inc ...
- 【BFS】POJ 3278
POJ 3278 Catch That Cow 题目:你要去抓一头牛,给出你所在的坐标和牛所在的坐标,移动方式有两种:要么前一步或者后一步,要么移动到现在所在坐标的两倍,两种方式都要花费一分钟,问你最 ...
- 【POJ 3669 Meteor Shower】简单BFS
流星雨撞击地球(平面直角坐标第一象限),问到达安全地带的最少时间. 对于每颗流星雨i,在ti时刻撞击(xi,yi)点,同时导致(xi,yi)和上下左右相邻的点在ti以后的时刻(包括t)不能再经过(被封 ...
- poj 3278 Catch That Cow bfs
Description Farmer John has been informed of the location of a fugitive cow and wants to catch her i ...
随机推荐
- scrapy_随机ip代理池
什么是ip代理? 我们电脑访问网站,其实是访问远程的服务器,通过ip地址识别是那个机器访问了服务器,服务器就知道数据该返回给哪台机器,我们生活中所用的网络是局域网,ip是运营商随机分配的,是一种直接访 ...
- 二叉查找树C++实现
二分查找树特点: (1) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值: (2) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值: (3) 任意节点的左.右子树 ...
- javaweb后台转码
为什么需要转码? 客户端向服务器发送请求的四种情况:1.URL方式直接访问;2.页面链接(属于get请求);3.表单get提交;4.表单post提交 1.url(url和页面链接):各大浏览器.各个操 ...
- 一个滑动选中RecyclerView中Item的布局SlidingCheckLayout,手指滑过Item时多项选中。
SlidingCheckLayout是一个滑动选中RecyclerView中Item的布局,手指滑过Item时多项选中. 作者:竹尘居士 github:https://github.com/homgw ...
- 【转】char*,string,CString,int,char[]之间的转换
CString 头文件#include <cstring>.CString 转char * CString cstr; ..data(),返回没有”/“的字符串数组..c_str(),返 ...
- SpringMVC源码之Controller查找原理
摘要 本文从源码层面简单讲解SpringMVC的处理器映射环节,也就是查找Controller详细过程. SpringMVC请求流程 Controller查找在上图中对应的步骤1至2的过程 Sprin ...
- 免费分享Navicat12各版本破解(仅供学习使用)
花了几个小时终于找到比较"绿色"的安装包了...(无力吐槽下现在网上好多挂羊头卖狗肉的网站) https://pan.baidu.com/s/1geMIkfT 密码:9a98 里面 ...
- Go笔记-流程控制
[if] if 是用于测试某个条件的语句,如果该条件(逻辑型或布尔型)成立,则会执行大括号内的代码,第一个大括号必须和if 或者else同行,否则非法 // 方式1 if condition { // ...
- Java中native关键字[转]
原文链接:http://blog.163.com/yueyemaitian@126/blog/static/21475796200701491621267/ 今日在hibernate源代码中遇到了na ...
- C语言实现数据结构中的堆创建,堆排序
#include "stdio.h"#include "stdlib.h"void swap(int *a,int *b)//交换两个数{int t;t=*a; ...