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 ...
最新文章
- 自定义控件学习,优秀网站推荐
- 使用用户名/密码和Servlet安全性保护WebSockets
- oracle多条sql语句常量,如何在Oracle中一次执行多条sql语句
- @data 重写set方法_C#中的类、方法和属性
- 【转载保存】在python中如何用word2vec来计算句子的相似度
- linux 接口 bridge vlan bonding,KVM配置BOND,BRIDGE,VLAN
- Java的核心思想(发展方向)
- echarts里面的参数解释_SPMSM控制:传统PI速度环参数的整定
- TFRecord —— tensorflow 下的统一数据存储格式
- mysql max 函数的陷阱
- item_review - 获得淘宝商品评论
- 基于竞争的MAC协议
- 达梦(DM)数据库常见问题详解
- Android——支持图片加视频无限轮播的banner
- 有限元方法之三角形元任意阶的Lagrange型形状函数
- Java中split的用法
- 任正非圣诞发表文章:我在生活所迫时创立华为
- phpems 修改模板_phpems二次开发手册
- Dart语言(一)--基础语法
- Bot 崛起:你的企业需要考虑这11个重要问题
热门文章
- 重走青春路……还是因到了“原点”……
- 逃离天坑之后——谈谈技术路线该怎么走
- R-Studio如何恢复被格式化移动硬盘数据
- Python 为什么只需一条语句“a,b=b,a”,就能直接交换两个变量?
- 读书笔记_007《青鸟》
- linux命令行下读取u盘内容_Linux拷贝U盘文件(命令行)
- 不懂时间管理的本质,你只会越来越忙
- IEEE 2022年网络、计算机和通信国际学术研讨会(ISNCC2022)
- SpringMVC 程序开发
- 【HFSS】有限大阵列FA-DDM仿真