略有收获的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]);
}
}
}

最新文章

  1. iOS基于MVC的项目重构总结
  2. cdnbest的站点设置里设置url跳转设置
  3. dojo/dom-form
  4. I&rsquo;ve seen the world,lit it up as my stage now
  5. a==null和a.equals(&quot;null&quot;)的区别
  6. C++容器的复制
  7. JavaScript函数小结
  8. Android 开源项目 eoe 社区 Android 客户端(转)
  9. [转载]linux下mysql 自动备份
  10. Tair LDB基于Prefixkey中期范围内查找性能优化项目总结
  11. Struts2入门到放弃
  12. REST&amp;RESTFUL
  13. linux shell 备注(一)
  14. jdk7_ConcurrentHashMap 图示
  15. mysql安装出现问题(The service already exists)
  16. struggle in the ACM(一)
  17. A - Packets 贪心
  18. 一道颇有难度的JavaScript题
  19. 线程的条件Condiition
  20. USB 驱动(监测鼠标左键的动作)

热门文章

  1. TFTP服务器
  2. Android studio 导入githubproject
  3. time machine不备份指定文件夹
  4. sql 导入数据库 出现乱码问题 解决办法 设置 --default-character-set=utf8
  5. js 监控浏览器关闭(完美兼容chrome &amp; ie &amp; fire fox)
  6. CodeForces 318D Ants
  7. STL review:vector &amp; string &amp; map &amp; struct
  8. 设计模式学习笔记——State状态模式
  9. jws webservice code
  10. mysql数据库隔离级别及其原理、Spring的7种事物传播行为