Time Limit: 10 second

Memory Limit: 2 MB

问题描述

铁达尼号遇险了!它发出了求救信号。距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里。通过侦测,哥伦比亚号获取了一张海洋图。这张图将海洋部分分化成n*n个比较小的单位,其中1标明的是陆地,用0标明的是海洋。船只能从一个各自移到相临的四个格子。为了尽快赶到出事地点,哥伦比亚号最少需要走多远的距离。

Input

第一行为n,下面是一个n*n的0,1矩阵,表示海洋地图。最后一行为四个小于n的整数,分别表示哥伦比亚号和铁达尼号的位置。

Output

哥伦比亚号到铁达尼号的最短距离,答案精确到整数。

Sample Input

3
001
101
100
1 1 3 3

Sample Output

4

【题解】

最短距离这类问题,可以用广搜来实现,因为广搜就是查看当前下一步可以走的所有情况,当所有情况都考虑到了,再 走下一步,即一层一层地搜索。如果遇到了终点,那这样的走法一定是最快的。遇到终点直接输出答案即可。

【代码】

#include <cstdio>
#include <iostream> const int dx[5] = {0,0,0,1,-1}; //用于扩展结点。
const int dy[5] = {0,1,-1,0,0}; int n,x1,yy1,x2,yy2,dl[2000000][3]; //dl表示队列 [i][0] 和 [i][1]用来存坐标 [2]用来存当前走的步数 dl[1000000][3]占用了11MB
bool a[2010][2010]; //用来存储地图信息 这个数组只占了 1MB不到 using namespace std; void input_data()
{
scanf("%d",&n);
for (int i = 1;i <= n;i++)
{
for (int j = 1;j<= n;j++)
{
char t;
cin >> t;
if (t=='0')
a[i][j] = true;
} }
scanf("%d%d%d%d",&x1,&yy1,&x2,&yy2); //输入起点和终点。
} void bfs(int x,int y) //从x,y起点开始搜索
{
int head =1,tail = 1; //头结点和尾节点
dl[1][0] = x;dl[1][1] = y;dl[1][2] = 0; //将第一个点入队
//a[x][y] = false;
while (head <= tail)
{
int xx = dl[head][0],yy = dl[head][1],tt = dl[head][2]; //取出头结点
head++;
for (int i = 1;i <= 4;i++) //往4个方向扩展
{
int tx = xx + dx[i],ty = yy + dy[i];
if (tx < 1) continue; //如果越界或者是陆地 活着已经走过 就不用走了。
if (tx > n) continue;
if (ty < 1) continue;
if (ty > n) continue;
if (a[tx][ty]) //如果可以走就走
{
a[tx][ty] = false;
dl[++tail][0] = tx;dl[tail][1] = ty;dl[tail][2] = tt + 1; //并记录在队列中 便于后续的扩展
if ( (tx == x2) && (ty == yy2)) //根据广搜的性质,可以一找到终点就输出。
{
printf("%d\n",dl[tail][2]);
return;
}
}
}
}
} void get_ans()
{
bfs(x1,yy1);
} int main()
{
input_data();
get_ans();
return 0;
}

【a803】营救的更多相关文章

  1. BZOJ-2324 营救皮卡丘 最小费用可行流+拆下界+Floyd预处理

    准备一周多的期末,各种爆炸,回来后状态下滑巨快...调了一晚上+80%下午 2324: [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec Memory Limit: 256 MB ...

  2. 【BZOJ 2324】 [ZJOI2011]营救皮卡丘

    Description 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘,也为了正义,小智和他的朋友们义不容辞的踏上了营救皮卡丘的道路. 火箭队一共有N个据点,据点 ...

  3. P1396 营救

    P1396 营救 218 通过 571 提交 题目提供者yeszy 标签 二分 图论 并查集 福建省历届夏令营 难度 普及- 题目描述 "咚咚咚--""查水表!" ...

  4. 【网络流24题】 No.14 孤岛营救问题 (分层图最短路)

    [题意] 1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛, 营救被敌军俘虏的大兵瑞恩. 瑞恩被关押在一个迷宫里, 迷宫地形复杂, 但幸好麦克得到了迷宫的地形图. 迷宫的外形是 ...

  5. bzoj 2324 [ZJOI2011]营救皮卡丘(floyd,费用流)

    2324: [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1777  Solved: 712[Submit][Stat ...

  6. BZOJ2324: [ZJOI2011]营救皮卡丘

    2324: [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1359  Solved: 522[Submit][Stat ...

  7. BZOJ 2324: [ZJOI2011]营救皮卡丘( floyd + 费用流 )

    昨晚写的题...补发一下题解... 把1~N每个点拆成xi, yi 2个. 预处理i->j经过编号不超过max(i,j)的最短路(floyd) S->0(K, 0), S->xi(1 ...

  8. [BZOJ2324][ZJOI2011][最小费用最大流]营救皮卡丘

    [Problem Description] 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘,也为了正义,小智和他的朋友们义不容辞的踏上了营救皮卡丘的道路. 火箭队 ...

  9. Linux_破解密码-营救模式

    实验用机:CentOS 5.7 破解密码 设置开机启动界面 系统运行级别 营救模式 一.破解密码 root用户可以更改任何用户的密码,普通用户只能修改自己的密码. 步骤: 1.重新启动系统 2.开机倒 ...

随机推荐

  1. ORACLE 11G R2 DG_BROKER 之SWITCH OVER

      官网:http://docs.oracle.com/cd/B12037_01/server.101/b10822/cli.htm 这个是有必要看一下. 注意本人已经完毕一次SWITCHOVER 所 ...

  2. Codeforces Round #450 (Div. 2) D.Unusual Sequences (数学)

    题目链接: http://codeforces.com/contest/900/problem/D 题意: 给你 \(x\) 和 \(y\),让你求同时满足这两个条件的序列的个数: \(a_1, a_ ...

  3. 常用的Windows命令

    常用的Windows命令 explorer-------打开资源管理器 logoff---------注销命令 shutdown-------关机命令 lusrmgr.msc----本机用户和组 se ...

  4. 代码高亮显示——google-code-prettify

    先放着,搭建完HEXO博客再来写这篇. https://code.google.com/archive/p/google-code-prettify/

  5. jmeter--使用badboy录制脚本

    JMeter录制脚本有多种方法,其中最常见的方法是用第三方工具badboy录制,另外还有JMeter自身设置(Http代理服务器+IE浏览器设置)来录制脚本,但这种方法录制出来的脚本比较多且比较乱,个 ...

  6. sea.js五分钟上手

    SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架.本文给大家分享sea.js知识总结,感兴趣的朋友一起学习吧http://reactjs.cn/http://reactjs. ...

  7. 折腾了我两天的springboot数据源datasource循环依赖问题,都被搞疯掉了

    在做项目重构的时候增加了两个功能 1.多数据源. 2.token的验证从以前的数据库验证,移到了redis端. 1.多数据源使用 druid-spring-boot-starter 套件 其核心代码如 ...

  8. 关于LWIP断开网线后重连问题(热插拔问题)

    近期在弄STM32+LWIP协议.在网络拔掉网线情况下.无法又一次连接. 网上找了好多方法都没有实现,着实郁闷! 后来无意间看到了临时解决这一问题的方法.尽管不是那么完美,但最算能解决这个问题.分享给 ...

  9. 介绍array_multisort方法

    介绍array_multisort方法 array_multisort — 对多个数组或多维数组进行排序.其php 手册中的说明如下:  代码如下: bool array_multisort ( ar ...

  10. 【POJ 3415】Common Substrings

    [链接]h在这里写链接 [题意]     求两个串的长度大于等于k的公共子串个数.     相同的重复计数. [题解]     先把两个字符串用一个分隔符分开.最好比出现的字符都大的一个数字.    ...