#pragma GCC optimize("Ofast") #pragma GCC target("avx2") char*mmap(); char*rp; #define RD(v) v=0;{int _c;while(_c=*rp++-48,_c>=0)v=v*10+_c;} int wy,wx,ay,ax,by,bx; static inline int s(int y,int x){ return rp[y*(wx+1)+x]=='.'; } #define INF (1<<24) int dp1[1333][1333]; int dp2[1333][1333]; int dp3[1333][1333]; struct{int y,x,d;} q[1<<16]; int qr,qw; static inline void enq(int y,int x,int d){ q[qw].y=y; q[qw].x=x; q[qw].d=d; qw=(qw+1)&(1<<16)-1; } void bfs(int y,int x,int ty,int tx,int dp[1333][1333]){ for(int y=0;y2){ d+=2; z=z<=d?z:d; } } } } if(n>len-1){ z=len; } } z*=2; { int d; d=dp3[by-1][bx]; if(d!=len-1&&z>len+d+1){ z=len+d+1; } d=dp3[by+1][bx]; if(d!=len-1&&z>len+d+1){ z=len+d+1; } d=dp3[by][bx-1]; if(d!=len-1&&z>len+d+1){ z=len+d+1; } d=dp3[by][bx+1]; if(d!=len-1&&z>len+d+1){ z=len+d+1; } } printf("%d\n",z>=INF?-1:z); }