Description
Input
Output
Sample Input
3 8 0 0 7 0 100 0 0 30 50 10 1 1 1 1
Sample Output
5 28 0
直接代码了。
LANGUAGE:C++
CODE:
#include<cstdio> #include<cstring> #include<queue> using namespace std; const int dir[8][2]={{-1,-2},{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2}}; struct node{int x,y,step;}; bool used[301][301]; int n; int startx,starty,endx,endy; node cur,pre; int bfs() { int i,x,y; queue<node>que; cur.x=startx,cur.y=starty,cur.step=0; memset(used,0,sizeof(used)); used[startx][starty]=1; que.push(cur); while(!que.empty()) { cur=que.front(),que.pop(); if(cur.x==endx&&cur.y==endy) return cur.step; for(i=0;i<8;i++) { x=cur.x+dir[i][0]; y=cur.y+dir[i][1]; if(x>=0&&x<n&&y>=0&&y<n&&!used[x][y]) { used[x][y]=1; pre.x=x,pre.y=y,pre.step=cur.step+1; que.push(pre); } } } return -1; } int main() { int tCase; scanf("%d",&tCase); while(tCase--) { scanf("%d",&n); scanf("%d%d%d%d",&startx,&starty,&endx,&endy); printf("%d\n",bfs()); } return 0; }