#include using namespace std; int dy[] = {0, 0, 1, -1}; int dx[] = {1, -1, 0, 0}; int W, H; string cave[30]; int id[30][30]; void dfs(int y, int x, int n){ if(y < 0 || y >= H || x < 0 || x >= W) return; if(cave[y][x] == '#' || id[y][x] != -1) return; id[y][x] = n; for(int i=0;i<4;i++) dfs(y + dy[i], x + dx[i], n); } int dist[30][30]; int bfs(){ memset(dist, -1, sizeof(dist)); queue> Q; for(int y=0;y= H || nx < 0 || nx >= W) continue; if(dist[ny][nx] != -1) continue; dist[ny][nx] = d + 1; Q.push(make_pair(ny, nx)); } } int res = 1 << 25; for(int y=0;y> W >> H; for(int i=0;i> cave[i]; int n = 0; for(int y=0;y