#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
typedef long long ll;
struct node{
int num,lab;
bool operator<(const node& a)const{
return num>a.num;
}
}e[50005];
int cnt;
int n,m,k;
char mapp[55][55];
int vis[555][555];
int dr[4]={0, -1, 0, 1};
int dc[4]={-1, 0, 1, 0};
void bfs(int r, int c){
cnt++;
cout<<"in bfs "<<r<<" "<<c<<endl;
for (int i=0; i<4; i++){
int nr=r+dr[i]; int nc=c+dc[i];
if (nr>=n || nr<0 || nc>=m || nc<0){
continue;
}
else{
if (!vis[nr][nc] && mapp[nr][nc]=='.'){
cout<<"ori"<<vis[nr][nc]<<endl;
cout<<"vischange"<<nr<<" "<<nc<<endl;
vis[nr][nc]==1;
cout<<nr<<" "<<nc<<endl;
cout<<"!!vis="<<vis[nr][nc]<<endl;
bfs(nr, nc);
}
}
}
}
int main(){
vector<int> vec;
scanf("%d%d%d", &n, &m, &k);
vec.clear();
//vec.resize(1);
for (int i=0; i<n; i++){
scanf("%s", mapp[i]);
}
memset(vis, 0, sizeof(vis));
int cct=0;
for (int i=0; i<n; i++){
for (int j=0; j<m; j++){
if (!vis[i][j] && mapp[i][j]=='.'){
cout<<"for"<<i<<j<<endl;
cout<<"vis"<<vis[i][j]<<endl;
vis[i][j]=1;
cnt=0;
bfs(i, j);
cout<<"cnt="<<cnt<<endl;
vec.push_back(cnt);
cct++;
}
}
}
cout<<"size="<<vec.size()<<endl;
sort(vec.begin(), vec.begin()+vec.size());
int res=0;
for (int i=0; i<k; i++){
res+=vec[i];
}
cout<<res;
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
typedef long long ll;
struct node{
int num,lab;
bool operator<(const node& a)const{
return num>a.num;
}
}e[50005];
int cnt;
int n,m,k;
char mapp[55][55];
int vis[555][555];
int dr[4]={0, -1, 0, 1};
int dc[4]={-1, 0, 1, 0};
void bfs(int r, int c){
cnt++;
cout<<"in bfs "<<r<<" "<<c<<endl;
for (int i=0; i<4; i++){
int nr=r+dr[i]; int nc=c+dc[i];
if (nr>=n || nr<0 || nc>=m || nc<0){
continue;
}
else{
if (!vis[nr][nc] && mapp[nr][nc]=='.'){
cout<<"ori"<<vis[nr][nc]<<endl;
cout<<"vischange"<<nr<<" "<<nc<<endl;
vis[nr][nc]==1;
cout<<nr<<" "<<nc<<endl;
cout<<"!!vis="<<vis[nr][nc]<<endl;
bfs(nr, nc);
}
}
}
}
int main(){
vector<int> vec;
scanf("%d%d%d", &n, &m, &k);
vec.clear();
//vec.resize(1);
for (int i=0; i<n; i++){
scanf("%s", mapp[i]);
}
memset(vis, 0, sizeof(vis));
int cct=0;
for (int i=0; i<n; i++){
for (int j=0; j<m; j++){
if (!vis[i][j] && mapp[i][j]=='.'){
cout<<"for"<<i<<j<<endl;
cout<<"vis"<<vis[i][j]<<endl;
vis[i][j]=1;
cnt=0;
bfs(i, j);
cout<<"cnt="<<cnt<<endl;
vec.push_back(cnt);
cct++;
}
}
}
cout<<"size="<<vec.size()<<endl;
sort(vec.begin(), vec.begin()+vec.size());
int res=0;
for (int i=0; i<k; i++){
res+=vec[i];
}
cout<<res;
return 0;
}