汉服网站的建设,嵌入式开发工程师,网站前端开发流程,翠竹营销网站设计2060. 奶牛选美 - AcWing题库
思路#xff1a;只有两个连通块#xff0c;先标记一个连通块。之后将这个连通块全部放入队列跑一个bfs即可。
#include bits/stdc.h
using namespace std;
const int N 121;
int fx[] {0, 0, 1, -1};
int fy[] {1, -1, 0, 0};
bool…2060. 奶牛选美 - AcWing题库
思路只有两个连通块先标记一个连通块。之后将这个连通块全部放入队列跑一个bfs即可。
#include bits/stdc.h
using namespace std;
const int N 121;
int fx[] {0, 0, 1, -1};
int fy[] {1, -1, 0, 0};
bool vis[N][N];
string ph[N];
struct no {int x,y,cnt;
};
int main()
{int n,m; cinnm;for(int i 0; i n; i) cinph[i];bool ok false;for(int i 0; i n; i) {for(int j 0; j m; j) {if(ph[i][j] X) {auto dfs [](auto self, int x, int y) - void {vis[x][y] 1;for(int i 0; i 4; i) {int xx x fx[i], yy y fy[i];if(xx 0 || xx n || yy 0 || yy m) continue;if(ph[xx][yy] . || vis[xx][yy]) continue;self(self, xx ,yy);}};dfs(dfs,i,j);ok true;break;}}if(ok) break;}queueno q;for(int i 0; i n; i) {for(int j 0; j m; j) {if(vis[i][j]) q.push({i, j, 0});}}while(q.size()) {auto tmp q.front(); q.pop();for(int i 0; i 4; i) {int xx tmp.x fx[i], yy tmp.y fy[i];if(xx 0 || xx n || yy 0 || yy m) continue;if(vis[xx][yy]) continue;vis[xx][yy] 1;if(ph[xx][yy] X) {couttmp.cntendl;return 0;}q.push({xx, yy, tmp.cnt 1});}}
}