洛谷 - P1443 - 马的遍历 - bfs
略有收获的bfs,使用了try_enqueue函数使得加入队列非常方便。性能理论上是一样的因为是inline?
还有就是左对齐是使用%-4d,相对于右对齐的%4d,还有右对齐前导零的%04d,自己试一下呗。
#include<bits/stdc++.h>
using namespace std;
#define ll long long int n,m,sx,sy; int ans[][]; struct QueueNode{
int x,y,t;
QueueNode(int x=,int y=,int t=):x(x),y(y),t(t){}
}; queue<QueueNode> q;
inline void try_enqueue(int x,int y,int t){
if(x>=&&x<=n&&y>=&&y<=m&&ans[x][y]==-){
ans[x][y]=t+;
q.push(QueueNode(x,y,t+));
}
} void bfs(){
try_enqueue(sx,sy,-);
while(!q.empty()){
QueueNode cur=q.front();
q.pop(); int x=cur.x;
int y=cur.y;
int t=cur.t; try_enqueue(x-,y-,t);
try_enqueue(x-,y-,t);
try_enqueue(x-,y+,t);
try_enqueue(x-,y+,t);
try_enqueue(x+,y+,t);
try_enqueue(x+,y+,t);
try_enqueue(x+,y-,t);
try_enqueue(x+,y-,t);
}
} int main(){
scanf("%d%d%d%d",&n,&m,&sx,&sy);
memset(ans,-,sizeof(ans)); bfs(); for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
printf("%-4d%c",ans[i][j]," \n"[j==m]);
}
}
}
洛谷 - P1443 - 马的遍历 - bfs的更多相关文章
- 【bfs】洛谷 P1443 马的遍历
题目:P1443 马的遍历 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 记录一下第一道ac的bfs,原理是利用队列queue记录下一层的所有点,然后一层一层遍历: 其中: 1.p ...
- 洛谷 P1443 马的遍历
P1443 马的遍历 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入输出格式 输入格式: 一行四个数据,棋盘 ...
- 洛谷P1443 马的遍历(bfs,注意输出格式)
题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入输出格式 输入格式: 一行四个数据,棋盘的大小和马的坐标 输出 ...
- 洛谷P1443 马的遍历【BFS】
题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入输出格式 输入格式: 一行四个数据,棋盘的大小和马的坐标 输出 ...
- 洛谷P1443 马的遍历
https://www.luogu.org/problemnew/show/P1443 很经典的搜索题了,蒟蒻用广搜打的 不说了,上代码! #include<bits/stdc++.h> ...
- 洛谷 P1443 马的遍历
终于遇到一个简单纯粹一点的bfs了...... 题目链接:https://www.luogu.org/problemnew/show/P1443 题目是求到达一个点的最短步数 也就是说我只要bfs遍历 ...
- 洛谷 P1443 马的遍历题解
题目链接:https://www.luogu.org/problem/P1443 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个 ...
- 【洛谷P1443 马的遍历】
题目链接(%%%jyy大佬) 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入输出格式 输入格式: 一行四个数 ...
- 洛谷——P1443 马的遍历
https://www.luogu.org/problem/show?pid=1443#sub 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达 ...
随机推荐
- IntelliJ IDEA cannot resolved 处理
IntelliJ IDEA cannot resolved 处理 学习了:https://stackoverflow.com/questions/21577573/intellij-idea-can- ...
- UVa 10295 - Hay Points
题目:有非常多工人.相应一个能力描写叙述表,每种能力有一个权值,求每一个工人的能力值. 分析:字符串.hash表,字典树.利用散列表或者字典树存储相应的单词和权值.查询就可以. 说明:注意初始化,计算 ...
- html+vlc 播放多视频
html代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- MySQL和MongoDB的性能测试
软硬件环境 MySQL版本:5.1.50,驱动版本:5.1.6(最新的5.1.13有很多杂七杂八的问题) MongoDB版本:1.6.2,驱动版本:2.1 操作系统:Windows XP SP3(这个 ...
- JQUERY多选框,单选框,检查选中的值
var str=""; $(":checkbox:checked").each(function(){ if($(this).attr("checke ...
- device not managed by NetworkManager
Bringing up interface eth0:Error:Connection activation failed:Device not managed by NetworkManager ...
- Mac 上VitrualBox安装CentOS6.5 调整root分区的大小
安装centOS的时候由于选择了动态调整磁盘大小.所以分配磁盘空间的时候就没多想,直接用的default的8G,以为不够了自己会调整,没想到是个大坑 发现提示空间不足的时候root仅仅有0k了.... ...
- Android GUI系统学习1:Gralloc
Gralloc模块是从Android Eclair(android 2.1)開始增加的一个HAL模块,Gralloc的含义为是Graphics Alloc(图形分配).他对上为libui提供服务,为其 ...
- day 18 面向对象的 继承
一.概念性知识 面向对象的三大特征: 继承,多态,封装 继承是创建新类的一种方法,在python中,新建的类可以继承一个或多个父类,父类称作基类或超类,新建的类又称作派生类或子类. 继承的好处 ...
- 常用SQL备忘录
联表删除: delete t1,t2 from table_name t1 left join t2 on t1.id=t2.id where t1.id=23 (ps:该语句在mysql 5.0之前 ...