PROBLEM LINK:
SOLUTION:
//To learn about pair<int,int> , please go to pair c++
//To learn about memset(), please go to memset()
#include <bits/stdc++.h>
#define _clear(a) memset(a,0,sizeof(a))
#define pii pair<int,int>
using namespace std;
int main()
{
int t;
cin>>t;
for(int n = 0; n<t; n++)
{
int col,row,source_x,source_y;
cin>>col>>row;
char arr[row][col];
char a;
for(int i = 0; i<row; i++) {
for(int j = 0; j<col; j++) {
cin>>a;
if(a==’@’) {
source_x = i;
source_y = j;
}
arr[i][j] = a;
}
}
bool visited[row][col];
int DX[] = {-1,1,0,0};
int DY[] = {0,0,-1,1};
int counter = 1;
queue <pii>q;
_clear(visited);
visited[source_x][source_y] = true;
q.push(pii(source_x,source_y));
while(!q.empty()) {
pii top = q.front();
q.pop();
for(int k = 0; k<4; k++) {
int f = top.first + DX[k];
int s = top.second + DY[k];
if(arr[f][s] == ‘#’)continue;
else if((f>=0&&f<row)&& (s>=0&&s<col)&&(!visited[f][s])&&arr[f][s] == ‘.’) {
visited[f][s] = true;
counter++;
q.push(pii(f,s));
}
}
}
cout<<“Case “<<n+1<<“: “<< counter<<endl;
}
}