提交时间:2022-01-29 11:04:54
运行 ID: 31159
#include <iostream> #include <cstring> #include <vector> #include <algorithm> using namespace std; const int N = 51; typedef pair<int, int> PII; int n, m; char g[N][N]; vector<PII> v[2]; int dx[4]={0, 1, 0, -1}, dy[4]={1, 0, -1, 0}; void dfs(int x, int y, vector<PII>& u) { g[x][y] = '.'; u.push_back({x, y}); for(int i = 0; i < 4; i ++) { int nx=x+dx[i], ny=y+dy[i]; if(nx>=0 && nx<n && ny>=0 && ny<m && g[nx][ny]=='X') //周围所有X dfs(nx, ny, u); } } int main() { cin >> n >> m; for(int i = 0; i < n; i ++) cin >> g[i]; for(int i = 0, k = 0; i < n; i ++) for(int j = 0; j < m; j++) if(g[i][j] =='X') dfs(i, j, v[k++]); int res = 1e9; for(auto& a: v[0]) for(auto& b : v[1]) res = min(res, abs(a.first-b.first)+abs(a.second-b.second)-1); cout << res; return 0; }