长草
问题描述
用bfs
#include <bits/stdc++.h>
using namespace std;
int n, m;
char mp[1001][1001];
int vis[1000][1000];
struct node {
int x;
int y;
};
int to[4][2] = { {0,1},{1,0},{0,-1},{-1,0} };
queue<node>q;
void bfs() {
int t = q.size();
while (t--) {
node now = q.front();
q.pop();
for (int i = 0; i < 4; i++) {
int xx, yy;
xx = now.x + to[i][0];
yy = now.y + to[i][1];
if (xx >= 0 && yy >= 0 && xx < n && yy < m && vis[xx][yy] == 0) {
node tmp;
tmp.x = xx;
tmp.y = yy;
q.push(tmp);
vis[xx][yy] = 1;
mp[xx][yy] = 'g';
}
}
}
}
int main(int argc, const char* argv[]) {
cin >> n >> m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> mp[i][j];
}
}
int k;
cin >> k;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (mp[i][j] == 'g') {
vis[i][j] = 1;
node tmp;
tmp.x = i, tmp.y = j;
q.push(tmp);
}
}
}
for (int i = 0; i < k; i++) {
bfs();
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << mp[i][j];
}
cout << endl;
}
return 0;
}