hihoCoder搜索二·骑士问题
2016-07-03 16:04
295 查看
#include <stdio.h> #include <string.h> #include <math.h> #include <algorithm> #include <iostream> using namespace std; #define LL __int64 #define mod 9973 #define N 100010 int ma[10][10]; int f1[10][10]; int f2[10][10]; int f3[10][10]; struct asd{ int x,y; int step; }; asd q ; int head,tail; int dx[8]={-2,-2,-1,-1,1,1,2,2}; int dy[8]={1,-1,2,-2,2,-2,1,-1}; void bfs1(int x,int y) { memset(f1,-1,sizeof(f1)); head=0; tail=1; q[head].x=x; q[head].y=y; f1[x][y]=0; while(head<tail) { int a=q[head].x; int b=q[head].y; for(int i=0;i<8;i++) { int aa=a+dx[i]; int bb=b+dy[i]; if(aa<1||bb<1||aa>8||bb>8||f1[aa][bb]!=-1) continue; q[tail].step=q[head].step+1; f1[aa][bb]=q[tail].step; q[tail].x=aa; q[tail].y=bb; tail++; } head++; } } void bfs2(int x,int y) { memset(f2,-1,sizeof(f2)); head=0; tail=1; q[head].x=x; q[head].y=y; f2[x][y]=0; while(head<tail) { int a=q[head].x; int b=q[head].y; for(int i=0;i<8;i++) { int aa=a+dx[i]; int bb=b+dy[i]; if(aa<1||bb<1||aa>8||bb>8||f2[aa][bb]!=-1) continue; q[tail].step=q[head].step+1; f2[aa][bb]=q[tail].step; q[tail].x=aa; q[tail].y=bb; tail++; } head++; } } void bfs3(int x,int y) { memset(f3,-1,sizeof(f3)); head=0; tail=1; q[head].x=x; q[head].y=y; f3[x][y]=0; while(head<tail) { int a=q[head].x; int b=q[head].y; for(int i=0;i<8;i++) { int aa=a+dx[i]; int bb=b+dy[i]; if(aa<1||bb<1||aa>8||bb>8||f3[aa][bb]!=-1) continue; q[tail].step=q[head].step+1; f3[aa][bb]=q[tail].step; q[tail].x=aa; q[tail].y=bb; tail++; } head++; } } int main() { int T; scanf("%d",&T); int x1,x3,x2,y1,y2,y3; while(T--) { char a1[5]; char a2[5]; char a3[5]; scanf("%s%s%s",a1,a2,a3); x1=a1[0]-'A'+1; y1=a1[1]-'0'; x2=a2[0]-'A'+1; y2=a2[1]-'0'; x3=a3[0]-'A'+1; y3=a3[1]-'0'; bfs1(x1,y1); bfs2(x2,y2); bfs3(x3,y3); int ans=1000; for(int i=1;i<=8;i++) { for(int j=1;j<=8;j++) { ans=min(f1[i][j]+f2[i][j]+f3[i][j],ans); } } printf("%d\n",ans); } return 0; }
相关文章推荐
- NOIP 2010 引水入城
- vs2013 boost1.6编译
- android studio __android_log_print 问题
- ViewDragHelper实现仿qq列表滑动删除
- html、web、http
- msyql
- redsi 散列
- MyBatis集合Spring(一)之在MyBatis中配置Spring的应用
- hihoCoder扩展欧几里得
- ubuntu14.04 cuda8.0 GTX1080 环境搭建
- 《Android开发艺术探索》读书笔记 (15) Android性能优化
- smarty原则及优点
- 212. Word Search II
- gnu C语言__attribute__作用
- 读书笔记-java网络编程-3线程-从线程返回信息
- 在redhat6下配置yum源的使用
- prototype 和 proto
- 浅析ODS与EDW关系(转载)
- (原)Ubuntu16中安装nvidia的显卡驱动
- UIActivityIndicatorView