ACM小组的Samsara和Staginner对中国象棋特别感兴趣,尤其对马(可能是因为这个棋子的走法比较多吧)的使用进行深入研究。今天他们又在 构思一个古怪的棋局:假如Samsara只有一个马了,而Staginner又只剩下一个将,两个棋子都在棋盘的一边,马不能出这一半棋盘的范围,另外这 一半棋盘的大小很奇特(n行m列)。Samsara想知道他的马最少需要跳几次才能吃掉Staginner的将(我们假定其不会移动)。当然这个光荣的任 务就落在了会编程的你的身上了。

Input

每组数据一行,分别为六个用空格分隔开的正整数n,m,x1,y1,x2,y2分别代表棋盘的大小n,m,以及将的坐标和马的坐标。(1<=x1,x2<=n<=20,1<=y1,y2<=m<=20,将和马的坐标不相同)

Output

输出对应也有若干行,请输出最少的移动步数,如果不能吃掉将则输出“-1”(不包括引号)。

Sample Input

8 8 5 1 4 5

Sample Output

3
 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
#define ll long long
#define inf 0x3fffffff
using namespace std;
struct Node
{
int x,y,step;
};
queue<Node> q;
int n,m;
int a[][];
int vis[][];
int d[][]={{,},{,-},{-,},{-,-},{,},{,-},{-,},{-,-}}; bool check(int x,int y)
{
if(x<||x>=n||y<||y>=m)
return false;
if(vis[x][y])
return false;
return true;
}
int bfs(int x1,int y1,int x2,int y2)
{
memset(vis,,sizeof(vis));
q.push( (Node){x1,y1,} );
vis[x1][y1]=;
while(!q.empty())
{
Node u=q.front();
q.pop();
if(u.x==x2&&u.y==y2)//到达目标
{
return u.step;
}
for(int i=;i<;i++)//遍历八个方向
{
int x=u.x+d[i][];
int y=u.y+d[i][];
if(check(x,y))//检查边界
{
vis[x][y]=;
q.push(Node{x,y,u.step+});//步数加1
}
}
}
return -;//如果不能吃掉将则输出“-1”
} int main()
{
int x1,y1,x2,y2;
while(~scanf("%d%d%d%d%d%d",&n,&m,&x1,&y1,&x2,&y2))
{
memset(vis,,sizeof(vis));
int ans= bfs(x2,y2,x1,y1);
printf("%d\n",ans);
}
return ;
}

最新文章

  1. LeetCode----202. Happy Number(Java)
  2. java简单统计.java文件中的有效代码行,空行,注释行
  3. C# POST与Get数据
  4. C语言实现strcmp
  5. HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)
  6. javascript笔记——jquery.each中使用continue和break的方式
  7. host文件的作用和介绍
  8. MessageDigest 类
  9. SQL中数据类型转换
  10. HDU 2255 奔小康,赚钱(KM算法模板)
  11. iOSNSDate的相关操作
  12. 如何让vue自定义组件可以包裹内容,并且渲染出来,以及组件的组合使用
  13. yum程序下载被占用
  14. mongooDb链接javaapi
  15. cgroup其他部分 IO + hugepage
  16. Android 裁剪人脸
  17. ffmpeg在asp.net 视频转换
  18. CISCO知识扫盲
  19. 【LOJ】#6435. 「PKUSC2018」星际穿越
  20. Linux服务器上Tomcat的Web工程部署

热门文章

  1. 【bzoj2325】[ZJOI2011]道馆之战 树链剖分+线段树区间合并
  2. 有用的Java注解
  3. [洛谷P3195][HNOI2008]玩具装箱TOY
  4. HDOJ.2064 汉诺塔III
  5. 雪碧图background-position的rem用法
  6. Ubuntu使用vim编辑器时出现上下左右键变成ABCD
  7. [bzoj 2818]欧拉函数
  8. Educational Codeforces Round 55 (Rated for Div. 2):E. Increasing Frequency
  9. oracle的sequece的使用(主键自增长)
  10. 动态规划:划分DP