#include <vector>
#include<iostream>
using namespace std;
typedef pair<int,int> pii;
const int N = 55;
int n,m;
char g[N][N];
vector<pii> points[2];
void dfs(int x,int y,vector<pii> &points)
{
points.push_back({x,y});
g[x][y]='.';
int x1[4]={0,0,-1,1};int y1[4]={-1,1,0,0};
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
int a=x+x1[i];int b=y+y1[i];
if(a>=0&&a<n&&b>=0&&b<m&&g[a][b]=='X')
{
dfs(a,b,points);
}
}
}
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>g[i][j];
for(int i=0,k=0;i<n;i++)
for(int j=0;j<m;j++)
if(g[i][j]=='X')
dfs(i,j,points[k++]);
int res=0x3f3f3f3f;
for(auto& a:points[0])
for(auto& b:points[1])
res=min(res,abs(a.first-b.first)+abs(a.second-b.second));
cout<<res-1;
}
刷题日记 acwing2060 母牛选美 floodfill填充算法
于 2022-11-04 11:24:31 首次发布