fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define read(v) for(auto &i:v)cin>>i
  4. #define Ebraam ios_base::sync_with_stdio(false); cin.tie(0), cout.tie(0);
  5. #define print(v) for(auto i:v)cout<<i<<' '
  6. #define rall(v) v.rbegin(), v.rend()
  7. #define all(v) v.begin(), v.end()
  8. #define pb push_back
  9. const ll N = 2e5 + 3, MOD = 1e9+7;
  10. using namespace std;
  11. int dx[]={1,1,-1,-1,0,0,1,-1};
  12. int dy[]={1,-1,1,-1,1,-1,0,0};
  13. int n,m,k,f=0,ans=0;
  14. vector<vector<char>>grid;
  15. vector<vector<bool>>vis;
  16. bool valid(int x,int y){
  17. return x>0&&y>0&&x<=n&&y<=m;
  18. }
  19. void dfs(int x,int y){
  20. if(ans==f-k)return;
  21. vis[x][y]=true;
  22. ans++;
  23. for(int k=4; k<8; k++){
  24. int nx=x+dx[k],ny=y+dy[k];
  25. if(valid(nx,ny)&&!vis[nx][ny]&&grid[nx][ny]=='.')dfs(nx,ny);
  26. }
  27. }
  28. void solve() {
  29. cin>>n>>m>>k;
  30. grid=vector<vector<char>>(n+1,vector<char>(m+1));
  31. vis=vector<vector<bool>>(n+1,vector<bool>(m+1));
  32. for(int i=1; i<=n; i++)for(int j=1; j<=m; j++)cin>>grid[i][j],f+=(grid[i][j]=='.');
  33. for(int i=1; i<=n; i++)for(int j=1; j<=m; j++)if(!vis[i][j]&&grid[i][j]=='.')dfs(i,j);
  34. for(int i=1; i<=n; i++)for(int j=1; j<=m; j++)if(!vis[i][j]&&grid[i][j]=='.')grid[i][j]='X';
  35. for(int i=1; i<=n; i++)for(int j=1; j<=m; j++)cout<<grid[i][j]<<" \n"[j==m];
  36.  
  37.  
  38. }
  39. int main() {
  40. Ebraam
  41. int t = 1;
  42. // cin >> t;
  43. while (t--) {
  44. solve();cout << '\n';
  45. }
  46. return 0;
  47. }
  48.  
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout