#include using namespace std; #define MAX 1002 struct ADD_LIST { int f_row,f_col,t_row,t_col; }; struct BFS_LIST { int row,col,index; }; BFS_LIST bfs_start,bfs_temp,bfs_next,bfs_end,bfs[100000]; ADD_LIST add_start,add_temp,add_next,add[100000]; int n,m,start_row,start_col,wall,add_count,answer_count=0,target_row,target_col,bfs_cnt=0; int from_row,from_col,to_row,to_col,array[MAX][MAX],answer[100000],target_count,add_cnt=0,in=0; void add_path(void) { scanf("%d",&add_count); for(int i=0;i0) { if(array[bfs_next.row-1][bfs_next.col]!=1) { bfs[bfs_cnt].row=bfs_next.row-1; bfs[bfs_cnt].col=bfs_next.col; bfs[bfs_cnt++].index=in; } } if(bfs_next.row+1<=n) { if(array[bfs_next.row+1][bfs_next.col]!=1) { bfs[bfs_cnt].row=bfs_next.row+1; bfs[bfs_cnt].col=bfs_next.col; bfs[bfs_cnt++].index=in; } } if(bfs_next.col+1<=m) { if(array[bfs_next.row][bfs_next.col+1]!=1) { bfs[bfs_cnt].row=bfs_next.row; bfs[bfs_cnt].col=bfs_next.col+1; bfs[bfs_cnt++].index=in; } } if(bfs_next.col-1>0) { if(array[bfs_next.row][bfs_next.col-1]!=1) { bfs[bfs_cnt].row=bfs_next.row; bfs[bfs_cnt].col=bfs_next.col-1; bfs[bfs_cnt++].index=in; } } } end_cnt++; in++; } if(flag==1) { bool val=true; cout<>1)<=0;i--) { if(val==true) cout<