#include #include #include #include using namespace std; int memo[3001][3001]; char line[3001][3001]; int dxs[8]={-1,-1,-1,0,0,1,1,1}; int dys[8]={-1,0,1,-1,1,-1,0,1}; int h,w; struct E{ int x,y; }; int f(int p,int d,int max){ int p1=p+d; if((0<=p1)&&(p1 qu; int main() { // your code goes here scanf("%d %d",&h,&w); memset(memo,0,sizeof(memo)); for(int i=0;i next; while(qu.empty()==false){ E e1=qu.front(); qu.pop(); int x=e1.x; int y=e1.y; for(int i=0;i<8;i++) { int x1=f(x,dxs[i],w); int y1=f(y,dys[i],h); if((memo[y1][x1]==0)&&(line[y1][x1]=='#')){ memo[y1][x1]=memo[y][x]+1; E e2; e2.y=y1; e2.x=x1; next.push(e2); if(ans