#include #include #include #include #include #include #include #include #include #include #include using namespace std; const int dir_x[4]={0,0,-1,1}; const int dir_y[4]={1,-1,0,0}; int r,c,n,T; int mid[111][111]; int SZ[111],Time[111]; int X[111],Y[111]; void init() { memset(SZ,0,sizeof(SZ)); memset(mid,0,sizeof(mid)); memset(Time,0,sizeof(Time)); } struct Node { int x,y,d,t; void toString() { printf("(%d,%d) d: %d t: %d\n",x,y,d,t); } }; bool isInside(int x,int y) { if((x>=1&&x<=r)&&(y>=1&&y<=c)) return true; return false; } void solve(int _x,int _y) { queue q; for(int i=0;i<4;i++) { Node nd; nd.x=_x; nd.y=_y; nd.d=i; nd.t=0; q.push(nd); } while(!q.empty()) { Node u=q.front(); q.pop(); int bbb=-1; int d=u.d; Node v; v.x=u.x+dir_x[d]; v.y=u.y+dir_y[d]; v.d=u.d; v.t=u.t+1; if(isInside(v.x,v.y)==false) continue; int id=mid[v.x][v.y]; if(id==0) { if(v.t=v.t) continue; else { if(v.t4) { Time[id]=v.t; bbb=id; } } } if(bbb!=-1) { for(int j=0;j<4;j++) { Node n1; n1.x=X[bbb]; n1.y=Y[bbb]; n1.d=j; n1.t=v.t; if(n1.t