标准的广搜。

采用队列保存形态,如果不会广搜的可以多看看PJ知识点。由于输入多组数据,每次标记数组要清空,每次队列元素也都要清空。

参考代码如下:

 #include<iostream>
#include<cstring>
#include<queue>
using namespace std;
int t,n,x1,y1,x2,y2;
int dx[]={-,,,,,-,-,-},dy[]={,,,-,-,-,-,};
bool f[][];
struct node
{
int x,y,step;
};
int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-;ch=getchar();}
return x*f;
}
void bfs()
{
node h;
h.x=x1;h.y=y1;h.step=;
queue<node>q;
q.push(h);
f[h.x][h.y]=;
while(!q.empty())
{
node k=q.front();
q.pop();
for(int i=;i<=;i++)
{
int xx=k.x+dx[i],yy=k.y+dy[i];
if(f[xx][yy]||xx<||yy<||xx>n||yy>n)continue;
node pus;
pus.x=xx;pus.y=yy;pus.step=k.step+;
f[xx][yy]=;
if(xx==x2&&yy==y2)
{
cout<<pus.step<<endl;
return;
}
q.push(pus);
}
}
}
int main()
{
//freopen("1.in","r",stdin);
t=read();
while(t--)
{
memset(f,,sizeof(f));
n=read();x1=read();y1=read();x2=read();y2=read();
if(x1==x2&&y1==y2)cout<<<<endl;
bfs();
}
return ;
}

最新文章

  1. window.self -&gt;window.top-&gt;window.parent
  2. hdu 3336 kmp+next数组应用
  3. c# 重新认识 Double 浮点型
  4. web前端之 DOM
  5. Prisma
  6. 图画hadoop -- 生态圈
  7. 刨根究底字符编码之十三——UTF-16编码方式
  8. 【转】MYSQL 使用SQLyog导入遇到问题解决
  9. Python——Pycharm安装、激活、中文、
  10. 第一册:lesson ninety-nine。
  11. python之匿名函数以及在内置函数中的使用
  12. GALV_maptravel研究分析(1)
  13. &lt;Hadoop&gt;&lt;SequenceFile&gt;&lt;Hadoop小文件&gt;
  14. 20155331《网络对抗》 Exp9 Web安全基础
  15. CF933A A Twisty Movement
  16. Python中“if __name__==&#39;__main__&#39;:”理解与总结
  17. RESTful Web API 实践
  18. 【转】iOS-APP如何做才安全
  19. 利用反射及ActionFilterAttribute实现MVC权限管理
  20. MySQL 5.7 解压版 安装教程(图文详细)[Windows]

热门文章

  1. jsp页面随页面初始化加载js函数
  2. Java 遇到的困难
  3. Rsync+sersync 数据同步指南
  4. Sql在Group by的select中包含多列
  5. php $_SERVER 中的 QUERY_STRING和REQUEST_URI
  6. TFRecords文件的生成和读取(1)
  7. 一个能极大提高生产率的Chrome新建标签页扩展
  8. 对logistic回归分析的两重认识
  9. Primary Key Increase by Trigger
  10. 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 I. Reversion Count (java大数)