Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef long double ld;
- int n,m,k;
- char ch[55][55];
- bool vis[55][55];
- bool check(int x,int y)
- {
- return x>=0&&y>=0&&y<m&&x<n;
- }
- bool ocean(int x,int y)
- {
- if(x==0)return 1;
- if(y==0)return 1;
- if(x==n-1)return 1;
- if(y==m-1)return 1;
- return 0;
- }
- int dx[4]={1,0,-1,0};
- int dy[4]={0,1,0,-1};
- int dfs(int x,int y)
- {
- if(vis[x][y])return 0;
- if(ocean(x,y))return -1e5;
- vis[x][y]=1;
- int ans=1;
- for(int i=0;i<4;i++)
- {
- int nx,ny;
- nx=x+dx[i];
- ny=y+dy[i];
- if(!check(nx,ny))continue;
- // cout<<nx<<' '<<ny<<endl;
- if(ch[nx][ny]=='*')continue;
- ans+=dfs(nx,ny);
- }
- return ans;
- }
- void dff(int x,int y)
- {
- ch[x][y]='*';
- for(int i=0;i<4;i++)
- {
- int nx,ny;
- nx=x+dx[i];
- ny=y+dy[i];
- if(!check(nx,ny))continue;
- // cout<<nx<<' '<<ny<<endl;
- if(ch[nx][ny]=='*')continue;
- dff(nx,ny);
- }
- }
- vector<pair<int,pair<int,int>>> vr;
- int main()
- {
- // cout<<vis[1][2];;
- cin>>n>>m>>k;
- for(int i=0;i<n;i++)
- for(int c=0;c<m;c++)
- cin>>ch[i][c];
- int po=0;
- for(int i=0;i<n;i++)
- for(int c=0;c<m;c++)
- {
- if(vis[i][c])continue;
- if(ch[i][c]!='.')continue;
- // cout<<i<<' '<<c<<endl;
- int g=dfs(i,c);
- if(g<=0)continue;
- po++;
- vr.push_back({g,{i,c}});
- }
- sort(vr.rbegin(),vr.rend());
- int ret=0;
- k=po-k;
- while(k--)
- {
- int g=vr.back().first;
- ret+=g;
- int ux=vr.back().second.first;
- int uy=vr.back().second.second;
- vr.pop_back();
- dff(ux,uy);
- }
- cout<<ret<<endl;
- for(int i=0;i<n;i++){
- for(int c=0;c<m;c++)
- cout<<ch[i][c];
- cout<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement