#include #include #include #include using namespace std; const int inf = 100000; char str[150]; int k[64],king[64][64],knight[64][64]; int move1[8][2]={-1,-1,-1,0,-1,1,0,1,1,1,1,0,1,-1,0,-1}; int move2[8][2]={-1,-2,-2,-1,-2,1,-1,2,1,2,2,1,2,-1,1,-2}; void init(){ int i,j,x,y,tx,ty; for(i=0;i<64;i++) for(j=0;j<64;j++) if(i==j) king[i][j]=knight[i][j]=0; else king[i][j]=knight[i][j]=inf; for(i=0;i<64;i++){ x=i/8,y=i%8; for(j=0;j<8;j++){ tx=x+move1[j][0],ty=y+move1[j][1]; if(tx>=0 && ty>=0 && tx<8 && ty<8) king[i][8*tx+ty]=1; } } for(i=0;i<64;i++){ x=i/8,y=i%8; for(j=0;j<8;j++){ tx=x+move2[j][0],ty=y+move2[j][1]; if(tx>=0 && ty>=0 && tx<8 && ty<8) knight[i][8*tx+ty]=1; } } } void floyd1(){ int i,j,k; for(k=0;k<64;k++) for(i=0;i<64;i++) for(j=0;j<64;j++) if(king[i][k]+king[k][j]