bzoj1671 Knights of Ni 骑士 BFS
Description
Input
Output
Sample Input
4 1 0 0 0 0 1 0
0 0 0 1 0 1 0 0
0 2 1 1 3 0 4 0
0 0 0 4 1 1 1 0
INPUT DETAILS:
Width=8, height=4. Bessie starts on the third row, only a few squares away
from the Knights.
Sample Output
HINT
这片森林的长为8,宽为4.贝茜的起始位置在第3行,离骑士们不远.
贝茜可以按这样的路线完成骑士的任务:北,西,北,南,东,东,北,东,东,南,南.她在森林的西北角得到一株她需要的灌木,然后绕过障碍把它交给在东南方的骑士.
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int n,m,ans=99999999;
int a[1005][1050];
int sx,sy,ex,ey;
bool vis[1005][1050];
int fx[4]={1,-1,0,0};
int fy[4]={0,0,-1,1};
int dis[1005][1050],dis2[1005][1050];
struct node{int x,y;
};
void bfs1(int s,int t)
{queue<node> q;memset(vis,0,sizeof(vis));memset(dis,-1,sizeof(dis));q.push((node){s,t});vis[s][t]=1;dis[s][t]=0;while(!q.empty()){node now=q.front();q.pop();for(int i=0;i<4;i++){node nex;nex.x=now.x+fx[i],nex.y=now.y+fy[i];if(nex.x<1 || nex.x>n || nex.y<1 || nex.y>m || a[nex.x][nex.y]==1 || a[nex.x][nex.y]==3 || vis[nex.x][nex.y]==1)continue;dis[nex.x][nex.y]=dis[now.x][now.y]+1;vis[nex.x][nex.y]=1;q.push(nex);}}
}
void bfs2(int s,int t)
{queue<node> q;memset(vis,0,sizeof(vis));memset(dis2,-1,sizeof(dis2));q.push((node){s,t});vis[s][t]=1;dis2[s][t]=0;while(!q.empty()){node now=q.front();q.pop();for(int i=0;i<4;i++){node nex;nex.x=now.x+fx[i],nex.y=now.y+fy[i];if(nex.x<1 || nex.x>n || nex.y<1 || nex.y>m || a[nex.x][nex.y]==1 || a[nex.x][nex.y]==2 || vis[nex.x][nex.y]==1)continue;dis2[nex.x][nex.y]=dis2[now.x][now.y]+1;vis[nex.x][nex.y]=1;q.push(nex);}}
}
int main()
{scanf("%d%d",&n,&m);swap(n,m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){scanf("%d",&a[i][j]);if(a[i][j]==2)sx=i,sy=j;if(a[i][j]==3)ex=i,ey=j;}bfs1(sx,sy);bfs2(ex,ey);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){if(a[i][j]==4){if(dis[i][j]==-1 || dis2[i][j]==-1)continue;ans=min(ans,dis[i][j]+dis2[i][j]);}}cout<<ans<<endl;return 0;
}
bzoj1671 Knights of Ni 骑士 BFS相关推荐
- bzoj 1671: [Usaco2005 Dec]Knights of Ni 骑士(BFS)
1671: [Usaco2005 Dec]Knights of Ni 骑士 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 416 Solved: 26 ...
- [题解] Knights of Ni 骑士 C++
Knights of Ni 骑士 题目 Description Input Output Sample Input Sample Output 思路 代码 题目 Description 给出一张W*H ...
- 1671: [Usaco2005 Dec]Knights of Ni 骑士
1671: [Usaco2005 Dec]Knights of Ni 骑士 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 351 Solved: 22 ...
- bzoj 1671: [Usaco2005 Dec]Knights of Ni 骑士
题目链接 题目背景: 贝茜遇到了一件很麻烦的事:她无意中闯入了森林里的一座城堡,如果她想回家,就必须穿过这片由骑士们守护着的森林.为了能安全地离开,贝茜不得不按照骑士们的要求,在森林寻找一种特殊的灌木 ...
- P5195 [USACO05DEC]Knights of Ni S
知识点:广度优先搜索 难度:4 这个题应该是一个裸的广搜,但是看洛谷的题解,什么分层图,双向广搜之类的比比皆是,我觉得一道题还是要用最简单的方法解决比较好,毕竟才看到紫书第6章,进阶指南一章也没看, ...
- 【from zero to zero】noip2017
from zero to zero 洛谷首页的倒计时不知道什么时候就变成了六字开头. 到底还是太弱了. 生病又拖了很多的时间. 听了很多的算法,自己写起来却非常困难. 也许要在累倒前做一些事情呢. 从 ...
- 杭电oj题目题型分类(转)
1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...
- HDOJ题目分类大全
版权声明:本文为博主原创文章,欢迎转载,转载请注明本文链接! https://blog.csdn.net/qq_38238041/article/details/78178043 杭电里面有很多题目, ...
- HDU题目分类大全【大集合】
基础题: 1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.105 ...
最新文章
- 21天让你成为Horizon View高手—Day20:证书管理
- C++中const迭代器 和 const_iterator的区别
- python实现词语相似度计算分析_相似度计算的方法及Python实现
- springmvc异常处理器
- windows c++ 内存映射大文件问题记录
- 关于MySql5“data too long for column”问题的探解
- Flash as3.0 保存MovieClip运动轨迹到json文件
- 搭建Typescript+React项目模板(5) --- 团队规范
- 随机抽题软件C语言,ppt VBA 实现随机抽题
- 编码的奥秘:电筒密谈
- GD32F103RC官方移植IAR
- linux系统微信怎么放桌面上,Linux 安装微信/QQ
- MATLAB求最大值max函数
- 重建oracle inventory
- 让极客精神成为自然:DefCon China看这一篇就够了
- Java自定义导出列_后台生成EXCEL文档,自定义列
- DB-Engines发布了2017年9月数据库排名。
- 在VMware中安装红帽Linux系统
- MVC框架的学习总结
- C++ Reference: Standard C++ Library reference: C Library: cstdio: clearerr
热门文章
- 技嘉显卡性能测试软件,理论性能测试_技嘉 AORUS GTX 1070 Gaming Box_显卡评测-中关村在线...
- 第三方支付-支付宝支付简易DEMO
- i春秋之SQL(详细WP)
- 以患者到医院就诊为背景,使用列表对象(ArrayList)和泛型机制实现就诊排队叫号系统
- 2021年茶艺师(中级)考试技巧及茶艺师(中级)模拟考试题库
- 【黄敏聪|自由设计师系列1-基础篇】教程之二 |自由设计师走向成功最佳策略是什么?
- [nlp] 小傻学数据预处理
- 百度搜狗SEO快速排名模拟点击工具-提升关键词排名
- 刚毕业做真实运维简历模板参考
- 即刻智能|MES生产制造管理系统助力企业实现“智慧工厂”