#include #include #include using namespace std; int sx,sy,ex,ey; char a[1002][1002]; int b[1002][1002]; int dir[8][2]={0,-1,1,-1,1,0,1,1,0,1,-1,1,-1,0,-1,-1}; struct fuck{ int x, y,t; friend bool operator< (const fuck &a, const fuck &b) { return a.t>b.t; } }f; priority_queue q; int bfs() { int nx,ny,nt,x,y,t,i; if(sx==ex&&sy==ey) return 0; f.x=sx;f.y=sy;f.t=0; q.push(f); b[sx][sy]=0; while(!q.empty()) { x=q.top().x; y=q.top().y; t=q.top().t; q.pop(); for(i=0;i<8;i++) { nx=x+dir[i][1]; ny=y+dir[i][0]; nt=t+(i!=(a[x][y]-48)); if(a[nx][ny]!='x'&&nt