穿越泥地(mud) (BFS)
问题 C: 穿越泥地(mud)
时间限制: 1 Sec 内存限制: 128 MB
提交: 16 解决: 10
[提交][状态][讨论版]
题目描述
清早6:00,FJ就离开了他的屋子,开始了他的例行工作:为贝茜挤奶。前一天晚上,整个农场刚经受过一场瓢泼大雨的洗礼,于是不难想象,FJ现在面对的
是一大片泥泞的土地。FJ的屋子在平面坐标(0,0)的位置j贝茜所在的牛棚则位于坐标(x,y) (-500≤x≤500;
-500≤Y≤500)处。当然,FJ也看到了地上的所有N(1≤N≤10000)个泥塘,第i个泥塘的坐标为(A_i,B_i)
(-500≤A_i≤500:-500≤B_i≤500)。每个泥塘都只占据了它所在的那个格子。
FJ自然不愿意弄脏他新买的靴子,但他同时想尽快到达贝茜所在的位置。为了数那些讨厌的泥塘,他已经耽搁了一些时间了。如果FJ只能平行于坐标轴移动,并
且只在x、y均为整数的坐标处转弯,童那么他从屋子门口出发,最少要走多少路才能到贝茜所在的牛棚呢?你可以认为从FJ的屋子到牛棚总是存在至少一条不经
过任何泥塘的路径。
输入
第1行:3个用空格隔开的整数:X,Y和N:
第2~N+1行:第i+l行为2个用空格隔开的整数:A_i和B_i。
输出
输出1个整数,即FJ在不踏进泥塘的情况下,到达贝茜所在牛棚所需要走过的最小距离。
样例输入
1 2 7
0 2
-1 3
3 1
1 1
4 2
-1 1
2 2
样例输出
11
提示
样例说明:贝茜所在牛棚的坐标为(1,2)。FJ能看到7个泥塘,它们的坐标分别为(0,2),(-1,3),(3,1),(1,1),(4,2),(-l,1),(2,2)。
以下为农场的简图(*为FJ的屋子,B为贝茜呆的牛棚):
y
↑
4| . . . . . . . .
3| . M . . . . . .
2| . . M B M . M .
1| . M . M . M . .
0| . . * . . . . .
-1| . . . . . . . .
--------------------→ x
-2-1 0 1 2 3 4 5
FJ的最佳路线是:(0,0),(-1,0),(-2,0),(-2,1),(-2,2),(-2,3),(-2,4),
(-1,4),(0,4),(0,3),(1,3),(1,2)。
【分析】由于某些坐标是负数,我们把每个坐标+500就成正的了。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <time.h>
#include <string>
#include <map>
#include <stack>
#include <vector>
#include <set>
#include <queue>
#define pi acos(-1.0)
#define inf 0x3f3f3f3f
using namespace std;
int n,m,flag=,a,b;
int dis[][]= {,,,,-,,,-};
int vis[][];
int w[][];
struct man
{
int x,y,step;
};
queue<man>q;
void bfs(man s)
{
q.push(s);
vis[s.x][s.y]=;
while(!q.empty())
{
man t=q.front();
q.pop();
//printf("%d %d %d\n",t.x,t.y,t.step);system("pause");
if(t.x==a&&t.y==b){printf("%d\n",t.step);flag=;return;}
for(int i=;i<;i++)
{
int xx=t.x+dis[i][];int yy=t.y+dis[i][];//
//printf("%d %d\n",xx,yy);
if(xx>=&&xx<=&&yy>=&&yy<=&&w[xx][yy]!=&&vis[xx][yy]==)
{
man k;k.x=xx;k.y=yy;k.step=t.step+;q.push(k);vis[xx][yy]=;
}
}
}
}
int main()
{
int g,h;
memset(vis,,sizeof(vis));
memset(w,,sizeof(w));
scanf("%d%d%d",&a,&b,&n);man s;
a+=;b+=;
for(int i=;i<n;i++){scanf("%d%d",&g,&h);w[g+][h+]=;}
s.x=;s.y=;s.step=;
bfs(s);
//if(flag==0)printf("-1\n");
return ;
}
穿越泥地(mud) (BFS)的更多相关文章
- 穿越泥地(mud)
穿越泥地(mud) 题目描述 清早6:00,FJ就离开了他的屋子,开始了他的例行工作:为贝茜挤奶.前一天晚上,整个农场刚经受过一场瓢泼大雨的洗礼,于是不难想象,FJ现在面对的 是一大片泥泞的土地.FJ ...
- BZOJ_1627_[Usaco2007_Dec]_穿越泥地_(bfs)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1627 网格图,给出起点,终点,障碍,求最短路. 分析 简单的宽搜. #include < ...
- 【BZOJ】1627: [Usaco2007 Dec]穿越泥地(bfs)
http://www.lydsy.com/JudgeOnline/problem.php?id=1627 裸bfs不解释.. #include <cstdio> #include < ...
- bzoj 1627: [Usaco2007 Dec]穿越泥地【bfs】
在洛谷上被卡了一个点开了O2才过= = bfs即可,为方便存储,把所有坐标+500 #include<iostream> #include<cstdio> #include&l ...
- BZOJ 1627: [Usaco2007 Dec]穿越泥地( BFS )
BFS... --------------------------------------------------------------------------------------- #incl ...
- BZOJ1627: [Usaco2007 Dec]穿越泥地
1627: [Usaco2007 Dec]穿越泥地 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 478 Solved: 303[Submit][Sta ...
- 1627: [Usaco2007 Dec]穿越泥地
1627: [Usaco2007 Dec]穿越泥地 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 504 Solved: 325[Submit][Sta ...
- bzoj1627 / P2873 [USACO07DEC]泥水坑Mud Puddles
P2873 [USACO07DEC]泥水坑Mud Puddles bfs入门. 对于坐标为负的情况,我们可以给数组下标加上$abs(min(minx,miny))$转正(根据题意判断) #includ ...
- 洛谷 P2873 [USACO07DEC]泥水坑Mud Puddles
P2873 [USACO07DEC]泥水坑Mud Puddles 题目描述 Farmer John is leaving his house promptly at 6 AM for his dail ...
随机推荐
- [vijos P1023] Victoria的舞会3
这… 本来想学习一下Tarjan算法的,没想到码都码好了发现这题不是求强连通分量而是简单的连通分量…图论基础都还给老师了啊啊啊!最后深搜通通解决! v标记是否被访问过,scc标记每个的祖先(本来想写T ...
- 五大要求让BPM与企业对接
BPM(即业务流程管理)在中国已经有多年的发展历史,但人们经常提到的还是企业对流程的迫切需要,鲜有人讨论什么样的企业才能实施BPM,或者换句话说BPM的本身对企业有什么要求.不是所有的工作都适合BPM ...
- android启动模式2
Android中的启动模式(下) 在这篇文章中,我会继续跟大家分享有关于Android中启动模式的相关知识.当然,如果对这个启动模式还不完全了解或者没有听过的话,可以先看看我之前写的有关于这个知识点的 ...
- Quartz之主方法运行
import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; impo ...
- JSON基础使用
1)JSON概念 JSON 是纯文本 JSON 具有“自我描述性”(人类可读) JSON 具有层级结构(值中存在值) JSON 可通过 JavaScript 进行解析 JSON 数据可使用 AJAX ...
- java基础-005
27.Java中垃圾回收的目的及回收的时机 垃圾回收的目的是识别并且丢弃不再使用的对象来释放和重用资源. 如果对象的引用被置为null,垃圾收集器不会立即释放对象占用的内存. 什么时候进行垃圾回收,主 ...
- Event Handling on Mac
Keyboard/Mouse Event + Cocoa AppleEvent + Cocoa AppleEvent + CommandLine App(w/o UI) + CoreFoundatio ...
- UIlabel设置不同的颜色
NSString *string = @"注册过程中出现问题,致电400-650-5167联系会养车工作人员"; NSRange range = [string rangeO ...
- iOS上架(转)
自己的经验总结,有错的话请留言,第一时间更改. 先大概说一下IOSAPP上架的几个步骤(详细步骤见下图): 创建证书请求文件 登录苹果开发者中心生成发布者证书(下载下来要双击一下) 设置APPID(要 ...
- Linksys WRT120N路由器备份文件解析
Perusing the release notes for the latest Linksys WRT120N firmware, one of the more interesting comm ...